#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(); } |
English