Submission #995473

#TimeUsernameProblemLanguageResultExecution timeMemory
99547312345678Trains (BOI24_trains)C++17
0 / 100
107 ms5980 KiB
#include <bits/stdc++.h> using namespace std; const int nx=1e5+5, mod=1e9+7, kx=255; int n, d[nx], x[nx], qs[kx][kx], dp[nx], res, sm=1, k=250; vector<int> rem[nx]; void add(int idx) { if (d[idx]==0) return; if (d[idx]>k) { for (int i=idx+d[i], j=0; j<x[idx]&&i<=n; j++, i+=d[i]) dp[i]=(dp[i]+dp[idx])%mod; } else { qs[d[idx]][idx%d[idx]]=(qs[d[idx]][idx%d[idx]]+dp[idx])%mod; if (idx+x[idx]*d[idx]<=n) rem[idx+x[idx]*d[idx]].push_back(idx); } } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n; for (int i=1; i<=n; i++) cin>>d[i]>>x[i]; dp[1]=1; add(1); for (int i=2; i<=n; i++) { for (int j=1; j<=k; j++) dp[i]=(dp[i]+qs[j][i%j])%mod; add(i); for (auto idx:rem[i]) qs[d[idx]][idx%d[idx]]=(((qs[d[idx]][idx%d[idx]]-dp[idx])%mod)+mod)%mod; } for (int i=1; i<=n; i++) res=(res+dp[i])%mod; cout<<res; }

Compilation message (stderr)

Main.cpp: In function 'void add(int)':
Main.cpp:15:27: warning: 'i' may be used uninitialized in this function [-Wmaybe-uninitialized]
   15 |         for (int i=idx+d[i], j=0; j<x[idx]&&i<=n; j++, i+=d[i]) dp[i]=(dp[i]+dp[idx])%mod;
      |                        ~~~^
#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...