Temat: Rozwiązanie

Jeśli zinterpretujemy zadanie jako graf, w którym węzłami są punkty kratowe, a krawędziami łączącymi je - możliwe ruchy, to otrzymujemy graf. Jeśli wybierzemy punkt (0,0) jako źródło, a punkty "na mecie" jako odpływ, to zadanie staje się bardzo proste i sprowadza się do obliczenia przepływu w takim grafie, należy również pamiętać, że MAX_FLOW = MIN_CUT. Ostatecznie należy sprawdzić, w jakim najniższym punkcie na mecie może zakończyć się gra, w tym celu można zastosować binary search.
Liczbę stuknięć wyliczamy ze wzoru: (Xkonca + wysokosc na koncu)/2.
Pozdrawiam.
Rozumiem, że krawędzie tworzysz online? Przy okazji, dość ciekawe rozwiązanie, ale jeśliby przechowywać wierzchołki normalnie, to stanowczo za wolne.
Przykład komplikowania sobie życia. :D Można po prostu zrobić zachłanne, online sprawdzanie w jakim przedziale ptaszek może być. I tak się dowiedzieć czy da radę dolecieć do końca.
A liczba kliknięć nie zależy od liczby przeszkód, tylko od ''najgorszej'' przeszkody. Odpowiedź dla testu z jedną przeszkodą jest trywialna, a my bierzemy max.
Pamięć stała, czas liniowy, stała mała.

UWAGA Ciekawostka: w tym rozwiązaniu pojawić się może wzór (x+2)/2, warto zwrócić uwagę na to, że nie jest on równoważny x/2+1. Drugi wzór daje błędne rozwiązanie.