#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 1, mod = 1e9 + 7;
map<int, int> prop[nmax];
int dp[nmax];
void scmod(int &a, int b) {
a -= b;
if (a < 0) {
a += mod;
}
}
void admod(int &a, int b) {
a += b;
if (a >= mod) {
a -= mod;
}
}
int32_t main() {
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]) {
admod(dp[i], val);
if (i + d1 <= n) {
admod(prop[i + d1][d1], val);
}
}
admod(ans, dp[i]);
if (d == 0) {
continue;
}
if (i + 1ll * (x + 1) * d <= n) {
scmod(prop[i + (x + 1) * d][d], dp[i]);
}
if (i + d <= n) {
admod(prop[i + d][d], dp[i]);
}
prop[i].clear();
}
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... |