제출 #1268923

#제출 시각아이디문제언어결과실행 시간메모리
1268923top1svtinTrains (BOI24_trains)C++20
100 / 100
180 ms6216 KiB
#include <bits/stdc++.h> #define kien long long #define pii pair<int, int> #define FOR(i, a, b) for (int i = a; i <= b; i++) #define FORD(i, a, b) for (int i = a; i >= b; i--) #define Million 1000000 const int MOD = 1e9 + 7; const int MXN = 2e5 + 5; const int BASE = 3137; using namespace std; kien dp[500][500], ans[200005]; priority_queue<pair<pair<kien,kien>,pair<kien,kien>>, vector<pair<pair<kien,kien>,pair<kien,kien>>>, greater<pair<pair<kien,kien>,pair<kien,kien>>>> ev; main() { kien n; cin >> n; ans[1] = 1; kien sum = 0; FOR (i, 1, n) { kien d, x; cin >> d >> x; for (kien j = 1; j*j < n; j++) { ans[i] += dp[i%j][j]; ans[i] %= 1000000007; } if (d*d >= n) { for (kien j = 1; j <= x and i+j*d <= n; j++) { ans[i+j*d] += ans[i]; ans[i+j*d] %= 1000000007; } } else if (d > 0) { dp[i%d][d] += ans[i]; dp[i%d][d] %= 1000000007; ev.push({{i+x*d,ans[i]},{i%d,d}}); } while (!ev.empty() and ev.top().first.first <= i) { auto cur = ev.top(); ev.pop(); dp[cur.second.first][cur.second.second] -= cur.first.second; while (dp[cur.second.first][cur.second.second] < 0) { dp[cur.second.first][cur.second.second] += 1000000007; } } sum += ans[i]; sum %= 1000000007; } cout << sum; }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp:17:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   17 | main() {
      | ^~~~
#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...