| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1287445 | quangminh412 | Trains (BOI24_trains) | C++17 | 79 ms | 4156 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)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
