Submission #1287445

#TimeUsernameProblemLanguageResultExecution timeMemory
1287445quangminh412Trains (BOI24_trains)C++17
100 / 100
79 ms4156 KiB
/* Ben Watson Quang Minh MasterDDDDD */ #include <bits/stdc++.h> using namespace std; #define ll long long const string name = "test"; void solve(); signed main() { if (fopen((name + ".inp").c_str(), "r")) { freopen((name + ".inp").c_str(), "r", stdin); freopen((name + ".out").c_str(), "w", stdout); } ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; } // main program const int maxn = 1e5 + 1; const int mod = 1e9 + 7; const int N = 317; void sub(int &a, int b) { a -= b; if (a < 0) a += mod; } void add(int &a, int b) { a += b; if (a >= mod) a -= mod; } int d[maxn], x[maxn]; int save[N][N]; int n; void solve() { cin >> n; for (int i = 1; i <= n; i++) cin >> d[i] >> x[i]; vector<int> dp(n + 1, 0); dp[1] = 1; priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq; for (int i = 1; i <= n; i++) { while (!pq.empty() && pq.top().first < i) { int idx = pq.top().second; pq.pop(); sub(save[d[idx]][idx % d[idx]], dp[idx]); } for (int t = 1; t < N; t++) add(dp[i], save[t][i % t]); if (d[i] >= N) { for (int t = 1; t <= x[i]; t++) { int j = i + t * d[i]; if (j > n) break; add(dp[j], dp[i]); } continue; } if (d[i] == 0) continue; pq.push({i + 1ll * x[i] * d[i], i}); add(save[d[i]][i % d[i]], dp[i]); } int res = 0; for (int i = 1; i <= n; i++) add(res, dp[i]); cout << res << '\n'; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen((name + ".inp").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen((name + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...