제출 #1313091

#제출 시각아이디문제언어결과실행 시간메모리
1313091aryanCurtains (NOI23_curtains)C++20
0 / 100
1 ms332 KiB
#include<bits/stdc++.h> using namespace std; using i64 = long long; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m,q; cin >> n >> m >> q; vector<int> l(m),r(m); vector<vector<int>> hs(n + 5); for(int i = 0;i < m;i++){ cin >> l[i] >> r[i]; l[i] --; r[i] --; hs[l[i]].push_back(r[i]); } for(int i = 0;i < n;i++){ sort(hs[i].begin(),hs[i].end()); } while(q --){ int s,e; cin >> s >> e; s --; e --; int cur = s - 1; if((int)hs[s].size() == 0){ cout << "NO\n"; continue; } int best = upper_bound(hs[s].begin(),hs[s].end(),e) - hs[s].begin(); best --; if(best < 0){ cout << "NO\n"; continue; } best = hs[s][best]; while(cur < best){ cur ++; if((int) hs[cur].size() != 0){ int ind = upper_bound(hs[s].begin(),hs[s].end(),e) - hs[cur].begin(); ind --; if(ind < 0){ best = max(best,hs[cur][ind]); assert(best <= e); } } if(cur == best && best < e){ int ind = upper_bound(hs[best + 1].begin(),hs[best + 1].end(),e) - hs[best + 1].begin(); ind --; if(ind >= 0){ best = max(best,hs[best + 1][ind]); } } } if(cur >= e){ cout << "YES\n"; }else{ cout << "NO\n"; } } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...