Submission #1200287

#TimeUsernameProblemLanguageResultExecution timeMemory
1200287brover29Osumnjičeni (COCI21_osumnjiceni)C++17
40 / 110
1095 ms17408 KiB
#include <bits/stdc++.h> //qwerty47924692 using namespace std; using ll = long long; const ll N=2e5+29; const string br="617283"; #define sz(a)(ll)a.size() #define f first #define s second ll n,l[N],r[N],nxt[N]; set<pair<ll,ll>>s; bool can_insert(ll i){ auto it=s.lower_bound({l[i],0}); if(it!=s.end()){ ll j=it->s; if(l[i]<=l[j]&&l[j]<=r[i])return 0; } if(it!=s.begin()){ --it; ll j=it->s; if(l[j]<=l[i]&&l[i]<=r[j])return 0; } return 1; } void calc(){ ll j=0; for(ll i=1;i<=n;i++){ if(j<i){ s.clear(); j=i; s.insert({l[i],i}); }while(j+1<=n&&can_insert(j+1)){ j++; s.insert({l[j],j}); } nxt[i]=j+1; s.erase({l[i],i}); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; for(ll i=1;i<=n;i++){ cin>>l[i]>>r[i]; } calc(); // for(ll i=1;i<=n;i++)cout<<nxt[i]<<' '; // cout<<'\n'; ll q; cin>>q; while(q--){ ll l,r; cin>>l>>r; ll ans=0; while(l<=r){ l=nxt[l]; ans++; } cout<<ans<<'\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...