Submission #1271983

#TimeUsernameProblemLanguageResultExecution timeMemory
1271983hi_samTrains (BOI24_trains)C++20
21 / 100
2096 ms8928 KiB
#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 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...