Submission #1033643

#TimeUsernameProblemLanguageResultExecution timeMemory
1033643vjudge1Trains (BOI24_trains)C++17
37 / 100
2049 ms6884 KiB
#include <bits/stdc++.h> #define ll long long int #define ii long long int #define endl '\n' #define pb push_back #define fi first #define se second #define ins insert #define pf push_front #define bit(n,k) ((n>>k)&1) #define pi acos(-1.0) const ll N=1e5+5, inf = 1e9, mod=1e9+7; using namespace std; ii t[4*N],lz[4*N]; void pus(ii v, ii l, ii r){ if(lz[v]==0) return; t[v]+=(r-l+1)*lz[v]; t[v]%=mod; if(l!=r){ lz[v<<1]+=lz[v]; lz[v<<1|1]+=lz[v]; lz[v<<1]%=mod; lz[v<<1|1]%=mod; } lz[v]=0; } void update(ii v, ii l, ii r, ii x, ii y, ii val){ pus(v,l,r); if(l>y||r<x) return; if(x<=l&&r<=y){ lz[v]+=val; lz[v]%=mod; pus(v,l,r); return; } ii mid=(l+r)>>1; update(v<<1,l,mid,x,y,val); update(v<<1|1,mid+1,r,x,y,val); t[v]=(t[v<<1]+t[v<<1|1])%mod; } ii get(ii v, ii l, ii r, ii x, ii y){ pus(v,l,r); if(l>y||r<x) return 0; if(x<=l&&r<=y) return t[v]; ii mid=(l+r)>>1; return (get(v<<1,l,mid,x,y)+get(v<<1|1,mid+1,r,x,y))%mod; } int main(){ // freopen("TRAVEL.INP", "r", stdin); // freopen("TRAVEL.OUT", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ii n; cin >> n; pair<ii,ii>a[n+1]; ii dp[n+1]; bool sub3=true; for(ii i=1;i<=n;i++){ cin >> a[i].fi >> a[i].se; dp[i]=0; if(a[i].fi!=1) sub3=false; } if(sub3){ update(1,1,n,1,1,1); for(ii i=1;i<=n;i++){ update(1,1,n,i+1,i+a[i].se,get(1,1,n,i,i)); } cout << get(1,1,n,1,n) << endl; } else{ dp[1]=1; for(ii i=1;i<=n;i++){ if(a[i].fi==0) continue; for(ii j=1;j<=a[i].se;j++){ if(i+j*a[i].fi>n) break; dp[i+j*a[i].fi]+=dp[i]; dp[i+j*a[i].fi]%=mod; } } ii res=0; for(ii i=1;i<=n;i++){ res+=dp[i]; res%=mod; } cout << res << 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...
#Verdict Execution timeMemoryGrader output
Fetching results...