#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 1, mod = 1e9 + 7;
unordered_map<int, int> prop[nmax];
int dp[nmax];
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin >> n;
dp[1] = 1;
int ans = 0;
for (int i = 1; i <= n; i++) {
int x, d;
cin >> d >> x;
for (auto [d1, val] : prop[i]) {
if (val != 0) {
dp[i] = (dp[i] + val) % mod;
if (i + d1 <= n) {
prop[i + d1][d1] = (prop[i + d1][d1] + val) % mod;
}
}
}
ans = (ans + dp[i]) % mod;
if (d == 0) {
continue;
}
if (i + 1ll * (x + 1) * d <= n) {
prop[i + (x + 1) * d][d] = (prop[i + (x + 1) * d][d] - dp[i] + mod) % mod;
}
if (i + d <= n) {
prop[i + d][d] = (prop[i + d][d] + dp[i]) % mod;
}
}
cout << ans;
return 0;
}
# | 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... |