제출 #1262095

#제출 시각아이디문제언어결과실행 시간메모리
1262095rayan_bdCurtains (NOI23_curtains)C++20
100 / 100
1321 ms114040 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 5e5 + 1000; const int INF = 1e9; int seg[mxN * 4], lz[mxN * 4]; void push(int node, int start, int end){ seg[node] = max(seg[node], lz[node]); if(start != end) lz[node * 2 + 1] = max(lz[node * 2 + 1], lz[node]); if(start != end) lz[node * 2 + 2] = max(lz[node * 2 + 2], lz[node]); lz[node] = 0; } void upd(int node, int start, int end, int l, int r, int v){ push(node, start, end); if(start > r || end < l) return; if(start >= l && end <= r){ lz[node] = max(lz[node], v); push(node, start, end); return; } int mid = start + (end - start) / 2; upd(node * 2 + 1, start, mid, l, r, v); upd(node * 2 + 2, mid + 1, end, l, r, v); seg[node] = min(seg[node * 2 + 1], seg[node * 2 + 2]); } int query(int node, int start, int end, int l, int r){ push(node, start, end); if(start > r || end < l) return INF; if(start >= l && end <= r) return seg[node]; int mid = start + (end - start) / 2; return min(query(node * 2 + 1, start, mid, l, r), query(node * 2 + 2, mid + 1, end, l, r)); } signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, m, q, l, r; cin >> n >> m >> q; vector<bool> ok(q + 1, 0); map<int, vector<int>> range; map<int, vector<pair<int, int>>> queries; for(int i = 1; i <= m; ++i){ cin >> l >> r; range[r].push_back(l); } for(int i = 1; i <= q; ++i){ cin >> l >> r; queries[r].push_back({l, i}); } for(int i = 1; i <= n; ++i){ for(auto it : range[i]) upd(0, 1, n, it, i, it); for(auto it : queries[i]){ ok[it.second] = (query(0, 1, n, it.first, i) == it.first); } } for(int i = 1; i <= q; ++i){ if(ok[i]) 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...