Submission #445307

#TimeUsernameProblemLanguageResultExecution timeMemory
445307BaraaArmoushDungeons Game (IOI21_dungeons)C++17
11 / 100
7065 ms22964 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 400400;

int n, m;
int s[N];
int p[N];
int w[N];
int l[N];
int maximum;

ll dp[N];

void init(int n, vector<int> S, vector<int> P, vector<int> W, vector<int> L) {
    ::n = n;
    copy(S.begin(), S.end(), s);
    copy(P.begin(), P.end(), p);
    copy(W.begin(), W.end(), w);
    copy(L.begin(), L.end(), l);

    maximum = *max_element(S.begin(), S.end());

    for (int i = n - 1; ~i; --i) {
        dp[i] = s[i] + dp[w[i]];
    }
}

ll simulate(int i, int z) {
    ll x = z;

    while (i < n && x < maximum) {
        if (x < s[i]) {
            x += p[i];
            i = l[i];
        } else {
            x += s[i];
            i = w[i];
        }
    }

    x += dp[i];
    i = n;

    return x;
}
#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...