Submission #1199782

#TimeUsernameProblemLanguageResultExecution timeMemory
1199782ofozCurtains (NOI23_curtains)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define vi vector<int> #define pi pair<int, int> #define ppi pair<pair<int, int>, int> vector<int> tree; vector<bool> lazy; void push(int v) { if (!lazy[v]) return; lazy[v] = 0; if (tree[v] < tree[2*v]) { lazy[2*v] = 1; tree[2*v] = tree[v]; } if (tree[v] < tree[2*v+1]) { lazy[2*v+1] = 1; tree[2*v+1] = tree[v]; } } void update(int v, int tl, int tr, int l, int r, int x) { if (l > r) return; if (tl == l && tr == r) { if (x >= tree[v]) return; tree[v] = x; lazy[v] = 1; return; } int tm = (tl+tr)/2; update(2*v, tl, tm, l, min(r, tm), x); update(2*v+1, tm+1, tr, max(l, tm+1), r, x); tree[v] = max(tree[2*v], tree[2*v+1]); } int query(int v, int tl, int tr, int l, int r) { if (l > r) return INT32_MIN; if (tl == l && tr == r) return tree[v]; push(v); int tm = (tl+tr)/2; int a = query(2*v, tl, tm, l, min(r, tm)); int b = query(2*v+1, tm+1, tr, max(l, tm+1), r); return max(a, b); } void solve() { int n, m, q; cin >> n >> m >> q; tree.resize(4*n, INT32_MAX); lazy.resize(4*n, false); vector<pair<int, int>> seg; for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; --a; --b; seg.push_back({a, b}); } sort(seg.begin(), seg.end()); vector<int> mn(n, INT32_MAX); vector<ppi> queries; for (int i = 0; i < q; ++i) { int a, b; cin >> a >> b; --a; --b; queries.push_back({{a, b}, i}); } sort(queries.begin(), queries.end()); vector<string> res(q); while (!queries.empty()) { pi p; int a, b, idx; tie(p, idx) = queries.back(); tie(a, b) = p; queries.pop_back(); while (!seg.empty() && seg.back().first >= a) { int aa, bb; tie(aa, bb) = seg.back(); seg.pop_back(); update(1, 0, n-1, aa, bb, bb); } int mx = query(1, 0, n-1, a, b); res[idx] = (mx <= b) ? "YES" : "NO"; } for (const auto& ans : res) { cout << ans << '\n'; } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); 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...