Submission #1146632

#TimeUsernameProblemLanguageResultExecution timeMemory
1146632monostackCurtains (NOI23_curtains)C++20
44 / 100
1536 ms60944 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(NULL); int n,m,q; cin>>n>>m>>q; bool c4 = true; vector<set<int>> lst(n); vector<int> str(n,1e18); for(int i = 0; i < m; i++){ int a,b; cin>>a>>b; lst[b-1].insert(a-1); str[a-1] = min(str[a-1],b-1); } vector<pair<int,int>> queries(q); for(int i = 0; i < q; i++){ int a,b; cin>>a>>b; if(a != 1) c4 = false; queries[i] = {a-1,b-1}; } if(c4){ vector<bool> can(n,0); int cur_c = 0; for(int j = str[0]; j < n; j++){ if(lst[j].empty()) continue; auto p = lst[j].begin(); if(p == lst[j].end() || *p > cur_c + 1) continue; cur_c = j; can[j] = true; } for(int i = 0; i < q; i++){ if(can[queries[i].second]) cout<<"YES"<<'\n'; else cout<<"NO"<<'\n'; } }else{ vector<vector<bool>> can(n, vector<bool>(n,0)); for(int i = 0; i < n; i++){ if(str[i] == 1e18) continue; int st = str[i], cur_c = i; for(int j = str[i]; j < n; j++){ auto p = lst[j].lower_bound(i); if(p == lst[j].end() || *p > cur_c+1) continue; cur_c = j; can[i][j] = true; } } for(int i = 0; i < q; i++){ if(can[queries[i].first][queries[i].second]) cout<<"YES"<<'\n'; else cout<<"NO"<<'\n'; } } }
#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...