Submission #1200289

#TimeUsernameProblemLanguageResultExecution timeMemory
1200289brover29Osumnjičeni (COCI21_osumnjiceni)C++17
110 / 110
234 ms47544 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[20][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[0][i]=j+1; s.erase({l[i],i}); } nxt[0][n+1]=n+1; for(ll i=n+1;i>=1;i--){ for(ll j=1;j<=19;j++){ nxt[j][i]=nxt[j-1][nxt[j-1][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; for(ll i=19;i>=0;i--){ if(nxt[i][l]<=r){ l=nxt[i][l]; ans+=(1ll<<i); } } 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...