Submission #1209112

#TimeUsernameProblemLanguageResultExecution timeMemory
1209112badge881Dungeons Game (IOI21_dungeons)C++20
37 / 100
7092 ms470880 KiB
#include "dungeons.h" #include <bits/stdc++.h> using namespace std; #define ll long long int n; vector<int> p, l; vector<vector<vector<ll>>> j; void init(int n, vector<int> s, vector<int> p, vector<int> w, vector<int> l) { ::n = n; ::p = p; ::l = l; j.assign(n + 1, vector<vector<ll>>(20, vector<ll>(3))); j[n][0] = {n, 0, 0}; for (int i = 0; i < n; i++) j[i][0] = {w[i], s[i], s[i]}; for (int k = 1; k < 20; k++) { for (int i = 0; i <= n; i++) j[i][k] = {j[j[i][k - 1][0]][k - 1][0], j[i][k - 1][1] + j[j[i][k - 1][0]][k - 1][1], max(j[i][k - 1][2], j[j[i][k - 1][0]][k - 1][2] - j[i][k - 1][1])}; } return; } ll simulate(int x, int iz) { ll z = iz; while (x != n) { for (int k = 19; k >= 0; k--) { if (z >= j[x][k][2]) { z += j[x][k][1]; x = j[x][k][0]; } } if (x != n) { z += p[x]; x = l[x]; } } return z; }
#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...