Submission #946346

#TimeUsernameProblemLanguageResultExecution timeMemory
946346simona1230Boat (APIO16_boat)C++17
0 / 100
3 ms4696 KiB
#include <bits/stdc++.h> using namespace std; long long n; pair<long long,long long> p[200001],a[200001]; void read() { cin>>n; for(long long i=1;i<=n;i++) { cin>>p[i].first>>p[i].second; } sort(p+1,p+n+1); long long last=0; for(long long i=1;i<=n;i++) { long long len=p[i].second-p[i].first; a[i].first=a[i-1].second+1; if(p[i-1].second>=p[i].first) { long long same=p[i-1].second-p[i].first; a[i].first=a[i-1].second-same; } a[i].second=a[i].first+len; //cout<<a[i].first<<" "<<a[i].second<<endl; } } const long long mod=1e9+7; long long t[4000001]; long long query(long long i,long long l,long long r,long long ql,long long qr) { if(ql>qr)return 0; if(l>=ql&&r<=qr) { //cout<<i<<" "<<l<<" "<<r<<" "<<t[i]<<" query"<<endl; return t[i]; } long long m=(l+r)/2; return (query(i*2,l,m,ql,min(qr,m))+query(i*2+1,m+1,r,max(ql,m+1),qr))%mod; } void update(long long i,long long l,long long r,long long idx,long long val) { if(l==r) { t[i]+=val; t[i]%=mod; return; } long long m=(l+r)/2; if(m>=idx)update(i*2,l,m,idx,val); else update(i*2+1,m+1,r,idx,val); t[i]=t[i*2]+t[i*2+1]; t[i]%=mod; //cout<<i<<" "<<l<<" "<<r<<" "<<t[i]<<endl; } void solve() { update(1,0,a[n].second,0,1); for(long long i=1;i<=n;i++) { for(long long j=a[i].second;j>=a[i].first;j--) { long long help=query(1,0,a[n].second,0,j-1); //cout<<i<<" "<<j<<" "<<dp[i][j]<<endl; update(1,0,a[n].second,j,help); } } cout<<query(1,0,a[n].second,1,a[n].second); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); read(); solve(); return 0; }

Compilation message (stderr)

boat.cpp: In function 'void read()':
boat.cpp:16:15: warning: unused variable 'last' [-Wunused-variable]
   16 |     long long last=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...