Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //flappy bird
- #include <iostream>
- #include <vector>
- struct Dozwolona
- {
- int x;
- std::vector<int> punkty;
- };
- void usun_poza_zakresem(std::vector<int>& punkty, int mini, int maxi)//zoptymalizuj
- {
- for (int i = 0; i < punkty.size(); i++)
- if (punkty[i]>maxi || punkty[i] < mini)
- punkty.erase(punkty.begin() + i);
- }
- bool sprawdz_droge(std::vector<Dozwolona>& dozwolone)
- {
- unsigned int mini, maxi;
- mini = maxi = 0;
- //sprawdz pierwsza
- usun_poza_zakresem(dozwolone[0].punkty, -dozwolone[0].x, dozwolone[0].x);
- if (dozwolone[0].punkty.size() == 0)//zadne nie sa dostepne
- return false;
- if(dozwolone.size() > 1)
- for (size_t i = 1; i < dozwolone.size(); i++)
- {
- int dx = dozwolone[i].x - dozwolone[i - 1].x;
- int maxi = dozwolone[i - 1].punkty[dozwolone[i - 1].punkty.size() - 1];
- int mini = dozwolone[i - 1].punkty[0];
- usun_poza_zakresem(dozwolone[i].punkty, mini - dx, maxi + dx);
- if (dozwolone[i].punkty.size() == 0)//zadne nie sa dostepne
- return false;
- }
- return true;
- }
- int main()
- {
- unsigned int ilosc_przeszkod;
- unsigned int cel_x;
- std::cin >> ilosc_przeszkod >> cel_x;
- if (ilosc_przeszkod > 0)
- {
- std::vector<Dozwolona> dozwolone(ilosc_przeszkod);
- for (auto& dozwolona : dozwolone)
- {
- int x, y1, y2;
- std::cin >> x >> y1 >> y2;
- for (y1++; y1 < y2; y1++)
- if ((y1 + x) % 2 == 0)
- dozwolona.punkty.push_back(y1);
- dozwolona.x = x;
- }
- if (sprawdz_droge(dozwolone))
- {
- unsigned int wynik;
- if (dozwolone.size()>1)
- wynik = dozwolone[dozwolone.size() - 1].punkty[0] + dozwolone[dozwolone.size() - 1].x;
- else
- wynik = dozwolone[0].punkty[0] + dozwolone[0].x;
- wynik /= 2;
- std::cout << wynik << '\n';
- }
- else
- {
- std::cout << "NIE\n";
- }
- }
- else std::cout << "0\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement