Submission #563794

#TimeUsernameProblemLanguageResultExecution timeMemory
563794kartelDungeons Game (IOI21_dungeons)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> //#include "grader.cpp" #include "dungeons.h" using namespace std; typedef long long ll; const int N = 4e5 + 500; ll sum_lose[N][30]; ll sum_win[N][30]; ll need_lose[N][30]; ll need_win[N][30]; int up_lose[N][30], up_win[N][30]; //int n; 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++) { need_lose[i][0] = s[i]; need_win[i][0] = s[i]; sum_lose[i][0] = p[i]; sum_win[i][0] = s[i]; up_lose[i][0] = l[i]; up_win[i][0] = w[i]; } for (int st = 1; st < 30; st++) { for (int i = 0; i < n; i++) { if (up_lose[i][st - 1] != n) { int to = up_lose[i][st - 1]; need_lose[i][st] = min(need_lose[i][st - 1], need_lose[to][st - 1] - sum_lose[i][st - 1]); sum_lose[i][st] = sum_lose[i][st - 1] + sum_lose[to][st - 1]; up_lose[i][st] = up_lose[to][st - 1]; } else { up_lose[i][st] = n; sum_lose[i][st] = sum_lose[i][st - 1]; need_lose[i][st] = need_lose[i][st - 1]; } if (up_win[i][st - 1] != n) { int to = up_win[i][st - 1]; need_win[i][st] = max(need_win[i][st - 1], need_win[to][st - 1] - sum_win[i][st - 1]); sum_win[i][st] = sum_win[i][st - 1] + sum_win[to][st - 1]; up_win[i][st] = up_win[to][st - 1]; } else { up_win[i][st] = n; sum_win[i][st] = sum_win[i][st - 1]; need_win[i][st] = need_win[i][st - 1]; } } } } long long simulate(int x, int start) { long long z = start; while (x != n) { for (int st = 29; st >= 0 && x != n; st--) { if (z < need_lose[x][st]) { z += sum_lose[x][st]; x = up_lose[x][st]; } } for (int st = 29; st >= 0 && x != n; st--) { if (z >= need_win[x][st]) { z += sum_win[x][st]; x = up_win[x][st]; } } } return z; }

Compilation message (stderr)

dungeons.cpp: In function 'long long int simulate(int, int)':
dungeons.cpp:53:17: error: 'n' was not declared in this scope
   53 |     while (x != n) {
      |                 ^