Submission #1033621

#TimeUsernameProblemLanguageResultExecution timeMemory
1033621ara_araTrains (BOI24_trains)C++17
100 / 100
202 ms254804 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7,maxn=1e5+1,cunt=320;
int f[maxn][cunt],d[maxn],x[maxn],dp[maxn];
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int n; cin>>n;
    for(int i=1;i<=n;i++) cin>>d[i]>>x[i];
    for(int i=n;i>=1;i--){
        dp[i]=1;
        if(d[i]){
            if(d[i]>cunt) for(int j=i+d[i];j<=min(n,i+x[i]*d[i]);j+=d[i]) dp[i]=(dp[i]+dp[j])%mod;
            else if(i+d[i]<=n){
                int tmp=f[i+d[i]][d[i]];
                if(i+d[i]*(x[i]+1)<=n) tmp-=f[i+d[i]*(x[i]+1)][d[i]];
                dp[i]=((dp[i]+tmp)%mod+mod)%mod;
            }
        }
        for(int j=1;j<=cunt;j++){
            f[i][j]=dp[i];
            if(i+j<=n) f[i][j]=(f[i][j]+f[i+j][j])%mod;
        }
    }
    cout<<dp[1];
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:22:20: warning: iteration 319 invokes undefined behavior [-Waggressive-loop-optimizations]
   22 |             f[i][j]=dp[i];
      |             ~~~~~~~^~~~~~
Main.cpp:21:22: note: within this loop
   21 |         for(int j=1;j<=cunt;j++){
      |                     ~^~~~~~
#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...