Submission #1063188

#TimeUsernameProblemLanguageResultExecution timeMemory
1063188antonTrains (BOI24_trains)C++17
34 / 100
112 ms4692 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int MAX_N = 1e5 + 10; const int MOD = 1e9+7; const int K = 300; int N; int d[MAX_N]; int x[MAX_N]; int dp[MAX_N]; int sufs[K][K]; signed main(){ cin>>N; for(int i = 0; i<N; i++){ cin>>d[i]>>x[i]; } fill(&sufs[0][0], &sufs[K-1][K], 0LL); for(int i = N-1; i>=0; i--){ dp[i] =1; if(d[i]!=0){ if(d[i]<K){ dp[i] = (dp[i] + sufs[d[i]][i%d[i]])%MOD; } else{ for(int j = i+d[i]; j<=min(N-1, i+d[i]*x[i]); j+=d[i]){ dp[i] =(dp[i]+dp[j])%MOD; } } } for(int j = 1; j<K; j++){ sufs[j][i%j] = (sufs[j][i%j] + dp[i])%MOD; } } cout<<dp[0]<<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...