This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/* Ignut
started: 17.08.2024
now: 17.08.2024
████████████████████████████████████████████████████████████████████
████████████████████████████████ ████████████████████████████████
██████████████████████████████ ██████████████████████████████
██████ ██████████████████ ██████████████████ ██████
██████ ██████████████ ██████████████ ██████
██████ ██ ████████████ ████████████ ██ ██████
██████ ████ ██████████ ██████████ ████ ██████
██████ ████ ██████████ ██████████ ████ ██████
██████ ████ ██████████ ██████████ ██████ ██████
██████ ██████ ██████████ ██████████ ██████ ██████
██████ ██████ ████████ ████████ ██████ ██████
██████ ██████ ██████ ██████ ██████ ██████
██████ ████ ████ ████ ████ ██████
██████ ██████████ ████ ██████████ ██████
██████ ██ ██████ ████████ ██████ ██ ██████
██████ ██████ ████████ ██████ ██████
██████ ██ ██ ██████
██████████████████████ ████ ████ ██████████████████████
████████████████████████ ██ ██ ████████████████████████
██████████████████████████ ██████████████████████████
██████████████████████████████ ██████████████████████████████
████████████████████████████████████████████████████████████████████
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 4e5 + 123;
int n;
int s[MAXN], p[MAXN], w[MAXN], l[MAXN];
int ss;
void init(int N, vector<int> S, vector<int> P, vector<int> W, vector<int> L) {
n = N;
for (int i = 0; i < N; i ++) {
s[i] = S[i], p[i] = P[i], w[i] = W[i], l[i] = L[i];
}
ss = s[0];
}
bool used[MAXN];
ll prefSum[MAXN];
ll simulate(int x, int z) {
ll pw = z;
for (int i = 0; i < n; i ++) {
used[i] = false;
prefSum[i] = 0;
}
ll cycleSum = 0;
while (x != n) {
if (used[x]) {
ll cnt = max(0ll, ss - pw) / (cycleSum - prefSum[x]);
pw += cnt * (cycleSum - prefSum[x]);
// cout << "do " << cnt << " sum " << cycleSum - prefSum[x] << '\n';
}
used[x] = true;
prefSum[x] = cycleSum;
if (pw >= s[x]) {
pw += s[x];
x = w[x];
// cycleSum = 0;
}
else {
pw += p[x];
cycleSum += p[x];
x = l[x];
}
}
return pw;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |