제출 #1062568

#제출 시각아이디문제언어결과실행 시간메모리
1062568Ignut던전 (IOI21_dungeons)C++17
0 / 100
7090 ms26812 KiB
/* 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]; int prefSum[MAXN]; ll simulate(int x, int z) { ll pw = z; for (int i = 0; i < n; i ++) { used[i] = false; prefSum[i] = 0; } int cycleSum = 0; while (x != n) { if (used[x]) { int 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]; } } // cout << "fsdafasdfsdafads\n"; return pw; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...