#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
const int B = 300;
const int MOD = 1e9 + 7;
int dp[N], S[B][N];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<array<int, 2>>v(n);
for(int i = 0;i < n;++i){
cin >> v[i][0] >> v[i][1];
}
for(int i = n - 1;i >= 0;--i){
int d = v[i][0], x = v[i][1];
dp[i] = 1;
for(int j = 1;j < B;++j){
if(i + j < n)S[j][i] = (S[j][i + j] + dp[i + j]) % MOD;
}
if(d >= B){
for(int j = 1;j <= x && i + j * 1ll * d < n;++j){
dp[i] += dp[i + j * d];
dp[i] %= MOD;
}
}
else{
int num = min(1ll * n, i + d * 1ll * x);
dp[i] += (S[d][i] - S[d][num] + MOD) % MOD;
}
}
cout << dp[0] << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |