Submission #845262

#TimeUsernameProblemLanguageResultExecution timeMemory
845262samekkkTrampoline (info1cup20_trampoline)C++14
100 / 100
873 ms54544 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, lg_SIZE = 18; 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 jump[max_N][lg_SIZE+1]; 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}); rep(i,n) { int y = P[i].y, x = P[i].x; if (auto it = S.find(y+1) == S.end()) { jump[i][0] = i; continue; } auto it = S[y+1].lower_bound({x,-1}); if (it != S[y+1].end()) jump[i][0] = it->idx; else jump[i][0] = i; } for (int i = 1; i <= lg_SIZE; ++i) { rep(j,n) { int val = jump[j][i-1]; jump[j][i] = jump[val][i-1]; } } cin >> q; rep(z,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) { cout << "Yes" << '\n'; continue; } if (auto it = S.find(y_1) == S.end()) { cout << "No" << '\n'; continue; } if (auto it = S[y_1].lower_bound({x_1,-1}) == S[y_1].end()) { cout << "No" << '\n'; continue; } int akt = (S[y_1].lower_bound({x_1,-1}))->idx, y = P[akt].y, x = P[akt].x; bool czy_OK = false; for (int i = lg_SIZE; i >= 0; --i) { int v = jump[akt][i]; if(P[v].y <= y_2-1) akt = v; } if((P[akt].y == y_2 or P[akt].y == y_2-1) and P[akt].x <= x_2) cout << "Yes" << '\n'; else cout << "No" << '\n'; /* while(y < y_2) { ++y; if (y > wysokosc) break; if (y == y_2 and x <= x_2) { 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:72:18: warning: unused variable 'it' [-Wunused-variable]
   72 |         if (auto it = S.find(y_1) == S.end())
      |                  ^~
trampoline.cpp:77:18: warning: unused variable 'it' [-Wunused-variable]
   77 |         if (auto it = S[y_1].lower_bound({x_1,-1}) == S[y_1].end())
      |                  ^~
trampoline.cpp:82:56: warning: unused variable 'y' [-Wunused-variable]
   82 |         int akt = (S[y_1].lower_bound({x_1,-1}))->idx, y = P[akt].y, x = P[akt].x;
      |                                                        ^
trampoline.cpp:82:70: warning: unused variable 'x' [-Wunused-variable]
   82 |         int akt = (S[y_1].lower_bound({x_1,-1}))->idx, y = P[akt].y, x = P[akt].x;
      |                                                                      ^
trampoline.cpp:83:14: warning: unused variable 'czy_OK' [-Wunused-variable]
   83 |         bool czy_OK = false;
      |              ^~~~~~
#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...