Submission #1213857

#TimeUsernameProblemLanguageResultExecution timeMemory
1213857stefanneaguTrains (BOI24_trains)C++20
71 / 100
2063 ms644568 KiB
#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 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...