#include <bits/stdc++.h>
#define int long long
#define vi vector<int>
#define vs vector<string>
#define vc vector<char>
#define vii vector<vi>
#define fi first
#define pii pair<int, int>
#define se second
#define mp make_pair
#define all(v) v.begin(), v.end()
#define pqi priority_queue<int>
#define pb push_back
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
const int mod = 1e9+7;
using namespace std;
vi dp;
vector<pii> v;
int n;
int f(int cur) {
if(dp[cur] != -1) return dp[cur];
int sum = 1;
for(int i = 1; i <= v[cur].se; i++) {
if(v[cur].fi == 0) break;
if(cur + i * v[cur].fi > n) break;
sum = (sum + f(cur + i * v[cur].fi)) % mod;
}
return dp[cur] = sum;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while(cin >> n) {
dp.clear(); dp.resize(n+1, -1);
v.clear(); v.resize(n+1);
for(int i = 1; i <= n; i++) cin >> v[i].fi >> v[i].se;
cout << f(1) << endl;
}
}
# | 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... |