Submission #1213866

#TimeUsernameProblemLanguageResultExecution timeMemory
1213866stefanneaguTrains (BOI24_trains)C++20
100 / 100
1727 ms216940 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") using namespace std; const int nmax = 1e5 + 1, mod = 1e9 + 7; unordered_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() { 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) { admod(dp[i], val); if (i + d1 <= n) { admod(prop[i + d1][d1], val); } } } admod(ans, dp[i]); if (d == 0 || dp[i] == 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 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...