Submission #526746

#TimeUsernameProblemLanguageResultExecution timeMemory
526746joelauOsumnjičeni (COCI21_osumnjiceni)C++14
10 / 110
1038 ms44804 KiB
#include <bits/stdc++.h> using namespace std; int N,Q; pair<int,int> lst[200005]; vector<int> A; struct node { int s,e,m,v,lazy; node *l, *r; node (int S, int E) { s = S, e = E, m = (s+e)/2, v = 0, lazy = -1; if (s != e) l = new node(s,m), r = new node(m+1,e); } void propo() { if (lazy == -1) return; v = lazy * (e-s+1); if (s != e) l->lazy = lazy, r->lazy = lazy; lazy = -1; } void update (int x, int y, int nv) { propo(); if (s == x && e == y) lazy = nv; else { if (y <= m) l -> update(x,y,nv); else if (x > m) r -> update(x,y,nv); else l -> update(x,m,nv), r -> update(m+1,y,nv); l->propo(), r->propo(); v = l->v + r->v; } } int query (int x, int y) { propo(); if (s == x && e == y) return v; else if (y <= m) return l -> query(x,y); else if (x > m) return r -> query(x,y); else return l->query(x,m) + r->query(m+1,y); } }*root; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> N; for (int i = 0; i < N; ++i) { cin >> lst[i].first >> lst[i].second; A.push_back(lst[i].first); A.push_back(lst[i].second); } sort(A.begin(),A.end()); A.resize(unique(A.begin(),A.end())-A.begin()); for (int i = 0; i < N; ++i) { lst[i].first = lower_bound(A.begin(),A.end(),lst[i].first) - A.begin(); lst[i].second = lower_bound(A.begin(),A.end(),lst[i].second) - A.begin(); } root = new node(0,A.size()-1); cin >> Q; while (Q--) { int l,r; cin >> l >> r; l--, r--; root -> update(0,A.size()-1,0); int ans = 1; for (int i = l; i <= r; ++i) { if (root -> query(lst[i].first,lst[i].second) != 0) { ans++; root -> update(0,A.size()-1,0); } root -> update(lst[i].first,lst[i].second,1); } cout << ans << '\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...