Submission #1186884

#TimeUsernameProblemLanguageResultExecution timeMemory
1186884asli_bgBoat (APIO16_boat)C++20
31 / 100
2105 ms403000 KiB
#include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define int long long typedef pair<int,int> pii; typedef vector<int> vi; typedef vector<pii> vii; typedef vector<bool> vb; typedef tree<pii,null_type,less<pii>,rb_tree_tag, tree_order_statistics_node_update> oset; #define fi first #define se second #define pb push_back #define pf push_front #define mid (l+r)/2 #define all(x) x.begin(),x.end() #define FOR(i,a) for(int i=0;i<(a);i++) #define FORE(i,a,b) for(int i=(a);i<(b);i++) #define cont(x) for(auto el:x) cout<<el<<' ';cout<<endl; #define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl; #define sp <<" "<< #define DEBUG(x) cout<<(#x) sp x<<endl #define carp(a,b) (((a%MOD)*(b%MOD))%MOD) #define topla(a,b) (((a%MOD)+(b%MOD))%MOD) const int INF=1e18; const int MAXN=1e6+5; const int MOD=1e9+7; int tut[MAXN]; int t[MAXN*4]; int mx; void update(int pos,int val,int nd=1,int l=1,int r=mx){ if(l==r){ t[nd]=topla(t[nd],val); return; } if(pos<=mid) update(pos,val,nd*2,l,mid); else update(pos,val,nd*2+1,mid+1,r); t[nd]=topla(t[nd*2],t[nd*2+1]); } int query(int ql,int qr,int nd=1,int l=1,int r=mx){ if(l>r or l>qr or r<ql) return 0; if(ql<=l and r<=qr){ return t[nd]; } auto s1=query(ql,qr,nd*2,l,mid); auto s2=query(ql,qr,nd*2+1,mid+1,r); return topla(s1,s2); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; vi a(n+1),b(n+1); set<int> cur; cur.insert(0); FORE(i,1,n+1){ cin>>a[i]>>b[i]; FORE(j,a[i],b[i]+1){ cur.insert(j); } } map<int,int> ind; int cnt=1; for(auto el:cur){ ind[el]=cnt++; } mx=cnt; update(ind[0],1); FORE(i,1,n+1){ FORE(deg,a[i],b[i]+1){ tut[ind[deg]]=query(ind[0],ind[deg]-1); } FORE(deg,a[i],b[i]+1){ update(ind[deg],tut[ind[deg]]); } } int ans=query(1,mx); cout<<topla(ans,MOD-1)<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...