Submission #845062

#TimeUsernameProblemLanguageResultExecution timeMemory
845062samekkkTrampoline (info1cup20_trampoline)C++14
0 / 100
2045 ms19796 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a,b) for (int a = 0; a < (b); ++a) #define pb push_back #define all(t) t.begin(), t.end() struct Pole { int y=-1, x=-1; }; struct Element { int val, idx; bool operator < (const Element &element) const { return val < element.val; } }; const int max_N = 2e5+5; int wysokosc = 0, szerokosc = 0, n = 0, q = 0, y_1 = 0, y_2 = 0, x_1 = 0, x_2 = 0; Pole P[max_N]; int nextt[max_N]; map<int,set<Element>> S; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> wysokosc >> szerokosc >> n; rep(i,n) cin >> P[i].y >> P[i].x; rep(i,n) S[P[i].y].insert({P[i].x,i}); //for (auto it = S.begin(); it != S.end(); ++it) sort(all(it->second)); rep(i,n) { int y = P[i].y, x = P[i].x; if (auto it = S.find(y+1) == S.end()) { nextt[i] = -1; continue; } auto it = S[y+1].lower_bound({x,-1}); if (it != S[y+1].end()) nextt[i] = it->idx; else nextt[i] = -1; } //rep(i,n) cout << nextt[i] << endl; cin >> q; while(q--) { cin >> y_1 >> x_1 >> y_2 >> x_2; if (y_1 > y_2 or x_1 > x_2) { cout << "No" << '\n'; continue; } if (y_1 == y_2 and x_1 == x_2) { cout << "Yes" << '\n'; continue; } if (auto it = S.find(y_1) == S.end()) { if (y_1 == y_2) cout << "Yes" << '\n'; else cout << "No" << '\n'; continue; } if (auto it = S[y_1].lower_bound({x_1,-1}) == S[y_1].end()) { if (y_1 == y_2) cout << "Yes" << '\n'; else cout << "No" << '\n'; continue; } int akt = (S[y_1].lower_bound({x_1,-1}))->idx, y = P[akt].y, x = P[akt].x; //cout << "AKT: " << akt << endl; bool czy_OK = false; while(y < y_2) { ++y; int do_kod_x = szerokosc; if (nextt[akt] != -1) do_kod_x = P[nextt[akt]].x; if (y > wysokosc) break; if (y == y_2 and x_2 >= x and x_2 <= do_kod_x) { czy_OK = true; break; } if (nextt[akt] == -1) break; akt = nextt[akt], x = P[akt].x; } if (czy_OK == true) cout << "Yes" << '\n'; else cout << "No" << '\n'; } return 0; }

Compilation message (stderr)

trampoline.cpp: In function 'int main()':
trampoline.cpp:41:18: warning: unused variable 'it' [-Wunused-variable]
   41 |         if (auto it = S.find(y+1) == S.end())
      |                  ^~
trampoline.cpp:65:18: warning: unused variable 'it' [-Wunused-variable]
   65 |         if (auto it = S.find(y_1) == S.end())
      |                  ^~
trampoline.cpp:71:18: warning: unused variable 'it' [-Wunused-variable]
   71 |         if (auto it = S[y_1].lower_bound({x_1,-1}) == S[y_1].end())
      |                  ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...