제출 #1232580

#제출 시각아이디문제언어결과실행 시간메모리
1232580asdfgraceTrains (BOI24_trains)C++20
34 / 100
88 ms2376 KiB
#include <bits/stdc++.h> using namespace std; #define dbg(x) x #define prt(x) dbg(cerr << x) #define pv(x) dbg(cerr << #x << " = " << x << '\n') #define parr(x) dbg(cerr << #x << " = "; for (auto y : x) {cerr << y << ' ';} cerr << '\n';) #define parr2d(x) dbg(cerr << #x << " = \n"; for (auto _ : x) {parr(_);} cerr << '\n';) /* */ const long long mod = 1e9 + 7; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<int> d(n), x(n); for (int i = 0; i < n; i++) { cin >> d[i] >> x[i]; } int s = sqrt(n); vector<vector<long long>> md(s + 1); for (int i = 1; i <= s; i++) { md[i].resize(i, 0); } vector<long long> dp(n, 0); for (int i = n - 1; i >= 0; i--) { dp[i] = 1; if (d[i] > s) { for (int j = i + d[i]; j < n; j += d[i]) { dp[i] += dp[j]; dp[i] %= mod; } } else if (d[i] > 0) { dp[i] += md[d[i]][i % d[i]]; dp[i] %= mod; } for (int j = 1; j <= s; j++) { md[j][i % j] += dp[i]; md[j][i % j] %= mod; } } cout << dp[0] << '\n'; }
#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...