Submission #1172959

#TimeUsernameProblemLanguageResultExecution timeMemory
1172959DangKhoizzzzCurtains (NOI23_curtains)C++17
100 / 100
900 ms68316 KiB
#include <bits/stdc++.h> #define pii pair <int , int> #define fi first #define se second using namespace std; const int INF = 1e9; const int maxn = 5e5 + 7; struct modified_Segment_Tree { int st[maxn*4] , lazy[maxn*4]; void init() { for(int i = 1; i < maxn*4; i++) st[i] = lazy[i] = INF; } void down(int id , int l , int r) { if(lazy[id] == INF) return; st[id] = min(st[id] , lazy[id]); if(l != r) { lazy[id*2] = min(lazy[id*2] , lazy[id]); lazy[id*2+1] = min(lazy[id*2+1] , lazy[id]); } lazy[id] = INF; } void update(int id , int l , int r , int u , int v , int val) { down(id , l , r); if(r < u || l > v) return; if(u <= l && r <= v) { lazy[id] = val; down(id , l , r); return; } int mid = (l+r) >> 1; update(id*2 , l , mid , u , v , val); update(id*2+1 , mid+1 , r , u , v , val); st[id] = max(st[id*2] , st[id*2+1]); } int get(int id , int l , int r , int u , int v) { down(id , l , r); if(r < u || l > v) return -INF; if(u <= l && r <= v) return st[id]; int mid = (l+r) >> 1; int Lget = get(id*2 , l , mid , u , v); int Rget = get(id*2+1 , mid+1 , r , u , v); return max(Lget , Rget); } }; int n , m , q; modified_Segment_Tree ST; vector <int> Rg[maxn]; vector <pii> query[maxn]; bool ans[maxn]; void solve() { cin >> n >> m >> q; for(int i = 1; i <= m; i++) { int l , r; cin >> l >> r; Rg[l].push_back(r); } for(int i = 1; i <= q; i++) { int l , r; cin >> l >> r; query[l].push_back({r , i}); } ST.init(); for(int l = n; l >= 1; l--) { for(int r: Rg[l]) ST.update(1 , 1 , n , l , r , r); for(pii tmp: query[l]) { int r = tmp.fi , id = tmp.se; if(ST.get(1 , 1 , n , l , r) == r) ans[id] = 1; } } for(int i = 1; i <= q; i++) { if(ans[i]) cout << "YES" << '\n'; else cout << "NO" << '\n'; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); 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...