Omówie to na przykładzie z pdfa:
Dla danych wejściowych:
4 11
4 1 4
7 -1 2
8 -1 3
9 0 2
Pierwsze wprowadzenie, tak jak w pdfie masz wytłumaczone, oznacza a - liczbe przeszkód, b - X, przy którym wygrywasz.
Następnie mamy pętle wczytującą te 3 liczby opisujące przeszkody. Zauważ, że pętla ma tyle iteracji ile jest przeszkód.
Zwróć uwagę, że to co opisujesz to tak naprawdę nie właściwości przeszkód tylko pola w którym tych przeszkód nie ma.
Pierwsza wartość Xi - oposuje pierwszą współrzędną prostej, przez którą ptaszek może przelecieć.
A następne dwie Ai, oraz Bi to drugie współrzędne opisujące położenie punktów będących końcami tych odcinków. Pierwsza współrzędna jest współna i wynosi Xi.
Na podstawie tych wartości wiesz już czy twój flappy bird może przedostać się czy nie.
NP:
Ptaszek znajduje się w punkcie (x,y) = (3,5)
A najbiższa przeszkoda jest charakteryzowana wielkościami
Xi = 4
Ai = 6
Bi = 1
Oznacza to, że jeśli nie chcesz przegrać to kiedy x ptaszka będzie równe Xi, czyli Xi = x, to y ptaszka musi znajdować się pomiędzy wartościami Ai oraz Bi, czyli na odcinku, który nie jest przeszkodą. Poniżej przedstawie funkcje, która ci to lepiej zobrazuje niż słowa.
bool czy_umre(int Ai, int Bi, int y){
if(Ai<Bi)
swap(a,b) // ta funkcja zamienia wartosci zmiennych ze sobą. Chodzi o to żeby Ai zawsze bylo większe od Bi, dla wygody.
// y symbolizuje zmienną wysokosci na ktorej znajduje się ptaszek
if(Ai>y && Bi<y)
return false;
else
return true;
}
Jesli cos niejasne - śmiało pisz :)