#include <iostream> #include <vector> using namespace std; int main() { long long liczbaBudynkow = 0; int liczbaPrzedzialow = 0; long long numerSzkoly = 0; cin >> liczbaBudynkow >> liczbaPrzedzialow >> numerSzkoly; std::vector<long long> najlepszeBudynki; long long odlegloscDolna = numerSzkoly - 1; long long odlegloscGorna = liczbaBudynkow - numerSzkoly; while (odlegloscDolna != 0 || odlegloscGorna != 0) { if (odlegloscDolna > odlegloscGorna) { najlepszeBudynki.push_back(numerSzkoly - odlegloscDolna); odlegloscDolna--; } else { najlepszeBudynki.push_back(odlegloscGorna + numerSzkoly); odlegloscGorna--; } } long long poczatekPrzedzialu = 0; long long koniecPrzedzialu = 0; for (int i = 0; i < liczbaPrzedzialow; ++i) { cin >> poczatekPrzedzialu >> koniecPrzedzialu; long long zakresPrzedzialu = koniecPrzedzialu - poczatekPrzedzialu + 1; for (long long j = 0; j < najlepszeBudynki.size(); ++j) { if (najlepszeBudynki[j] <= koniecPrzedzialu && najlepszeBudynki[j] >= poczatekPrzedzialu) { najlepszeBudynki.erase(najlepszeBudynki.begin() + j); --j; zakresPrzedzialu--; } if (zakresPrzedzialu == 0) { break; } } } cout << najlepszeBudynki.back(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <iostream> #include <vector> using namespace std; int main() { long long liczbaBudynkow = 0; int liczbaPrzedzialow = 0; long long numerSzkoly = 0; cin >> liczbaBudynkow >> liczbaPrzedzialow >> numerSzkoly; std::vector<long long> najlepszeBudynki; long long odlegloscDolna = numerSzkoly - 1; long long odlegloscGorna = liczbaBudynkow - numerSzkoly; while (odlegloscDolna != 0 || odlegloscGorna != 0) { if (odlegloscDolna > odlegloscGorna) { najlepszeBudynki.push_back(numerSzkoly - odlegloscDolna); odlegloscDolna--; } else { najlepszeBudynki.push_back(odlegloscGorna + numerSzkoly); odlegloscGorna--; } } long long poczatekPrzedzialu = 0; long long koniecPrzedzialu = 0; for (int i = 0; i < liczbaPrzedzialow; ++i) { cin >> poczatekPrzedzialu >> koniecPrzedzialu; long long zakresPrzedzialu = koniecPrzedzialu - poczatekPrzedzialu + 1; for (long long j = 0; j < najlepszeBudynki.size(); ++j) { if (najlepszeBudynki[j] <= koniecPrzedzialu && najlepszeBudynki[j] >= poczatekPrzedzialu) { najlepszeBudynki.erase(najlepszeBudynki.begin() + j); --j; zakresPrzedzialu--; } if (zakresPrzedzialu == 0) { break; } } } cout << najlepszeBudynki.back(); } |