제출 #1213853

#제출 시각아이디문제언어결과실행 시간메모리
1213853stefanneaguTrains (BOI24_trains)C++20
71 / 100
2121 ms693192 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]) {
            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...