Submission #1109432

#TimeUsernameProblemLanguageResultExecution timeMemory
11094320pt1mus23Trains (BOI24_trains)C++14
58 / 100
895 ms806420 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define ins insert      
#define pb push_back
#define endl '\n'
#define putr(x) cout<<x<<endl;return; 
#define all(x) x.begin(),x.end()
int nxt(){ int x;cin>>x; return x; }
const int mod = 1e9 +7, sze = 2e5 +10, inf = LLONG_MAX, LG = 20;

const int B= 555;
int pref[B][B];
int event[sze][B],dp[sze];

void nev(int pos,int jump,int val){
    if(pos>=sze){
        return;
    }
    event[pos][jump]=(event[pos][jump] +val + mod)%mod;
}

void rush(){
    int n;
    cin>>n;
    vector<pair<int,int>> arr(n+1);
    for(int i=1;i<=n;i++){
        cin>>arr[i].first>>arr[i].second;
    }
    dp[1]=1;

    for(int i=1;i<=n;i++){
        for(int j=1;j<B;j++){
            pref[ i%j ][j] = ( pref[i%j][j] + event[i][j] + mod)%mod;
            dp[i]=(dp[i] + pref[i%j][j] + mod)%mod;
        }
        if( arr[i].first){
            if(arr[i].first >= B){
                for(int j = arr[i].first + i, c = 1;c<=arr[i].second, j<=n; j+=arr[i].first, c++){
                    dp[j]= (dp[j] + dp[i] + mod)%mod;
                }
            }
            else{
                nev(i + arr[i].first, arr[i].first, dp[i]);
                nev( i + arr[i].first * (1+arr[i].second), arr[i].first, -dp[i]);
            }
        }
    }

    int ans=0;

    for(int i=1;i<=n;i++){
        ans=(ans+dp[i] + mod)%mod;
    }
    putr((ans + mod)%mod);
}
 
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
    int tt = 1; 
    // cin>>tt;
 
    while(tt--){
        rush();
    }
 
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void rush()':
Main.cpp:39:54: warning: value computed is not used [-Wunused-value]
   39 |                 for(int j = arr[i].first + i, c = 1;c<=arr[i].second, j<=n; j+=arr[i].first, c++){
      |                                                     ~^~~~~~~~~~~~~~~
#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...