Submission #443024

# Submission time Handle Problem Language Result Execution time Memory
443024 2021-07-09T13:37:05 Z ltf0501 Dungeons Game (IOI21_dungeons) C++17
50 / 100
7000 ms 415700 KB
#include "dungeons.h"
#include <bits/stdc++.h>
using namespace std;

const int kN = 4e5 + 10;
const int kC = 25;
// subtask 3
int n;
vector<int> s, p, w, l;
long long suf[kN];
int climb[2][kC][kN], MAX; // 0: win, 1: lose
long long max_pow[2][kC][kN], gained_pow[2][kC][kN];
void init(int _n, vector<int> _s, vector<int> _p, vector<int> _w, vector<int> _l) {
  n = _n, s = _s, p = _p, w = _w, l = _l;
  
  for(int i = n - 1; i >= 0; i--) suf[i] = s[i] + suf[w[i]], MAX = max(MAX, s[i]);
  for(int i = 0; i < n; i++) {
    climb[0][0][i] = w[i];
    climb[1][0][i] = l[i];

    max_pow[0][0][i] = s[i];
    max_pow[1][0][i] = s[i] - 1;

    gained_pow[0][0][i] = s[i];
    gained_pow[1][0][i] = p[i];
  }
  climb[0][0][n] = n;
  climb[1][0][n] = n;

  for(int j = 1; j < kC; j++) {
    for(int i = 0; i <= n; i++) {
      climb[0][j][i] = climb[0][j - 1][climb[0][j - 1][i]];
      climb[1][j][i] = climb[1][j - 1][climb[1][j - 1][i]];

      max_pow[0][j][i] = max(max_pow[0][j - 1][i], max_pow[0][j - 1][climb[0][j - 1][i]] - gained_pow[0][j - 1][i]);
      max_pow[1][j][i] = min(max_pow[1][j - 1][i], max_pow[1][j - 1][climb[1][j - 1][i]] - gained_pow[1][j - 1][i]);

      gained_pow[0][j][i] = gained_pow[0][j - 1][i] + gained_pow[0][j - 1][climb[0][j - 1][i]];
      gained_pow[1][j][i] = gained_pow[1][j - 1][i] + gained_pow[1][j - 1][climb[1][j - 1][i]];
    }
  }

	return;
}

long long simulate(int x, int z) {
  long long res = z;
  int cnt = 0;
  while(x < n) {
    cnt++;
    bool flag = (res < s[x]);
    for(int j = kC - 1; j >= 0; j--) {
      auto Check = [&]()->bool {
        if(flag) return res > max_pow[flag][j][x];
        else return res < max_pow[flag][j][x];
      };
      if(Check()) continue;
      res += gained_pow[flag][j][x], x = climb[flag][j][x];
    }
  }
  return res;
}

# Verdict Execution time Memory Grader output
1 Correct 1 ms 1356 KB Output is correct
2 Correct 1 ms 1356 KB Output is correct
3 Correct 3 ms 3404 KB Output is correct
4 Correct 53 ms 53052 KB Output is correct
5 Correct 3 ms 3404 KB Output is correct
6 Correct 54 ms 53052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 2380 KB Output is correct
2 Correct 525 ms 414396 KB Output is correct
3 Correct 448 ms 415700 KB Output is correct
4 Correct 490 ms 415348 KB Output is correct
5 Correct 491 ms 415140 KB Output is correct
6 Correct 512 ms 415124 KB Output is correct
7 Correct 451 ms 414772 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2508 KB Output is correct
2 Correct 98 ms 53840 KB Output is correct
3 Correct 103 ms 53836 KB Output is correct
4 Correct 76 ms 53828 KB Output is correct
5 Correct 80 ms 53872 KB Output is correct
6 Correct 134 ms 53828 KB Output is correct
7 Correct 214 ms 53836 KB Output is correct
8 Correct 80 ms 53776 KB Output is correct
9 Correct 86 ms 53836 KB Output is correct
10 Correct 81 ms 53772 KB Output is correct
11 Correct 127 ms 53876 KB Output is correct
12 Correct 187 ms 53840 KB Output is correct
13 Correct 150 ms 53804 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2508 KB Output is correct
2 Correct 98 ms 53840 KB Output is correct
3 Correct 103 ms 53836 KB Output is correct
4 Correct 76 ms 53828 KB Output is correct
5 Correct 80 ms 53872 KB Output is correct
6 Correct 134 ms 53828 KB Output is correct
7 Correct 214 ms 53836 KB Output is correct
8 Correct 80 ms 53776 KB Output is correct
9 Correct 86 ms 53836 KB Output is correct
10 Correct 81 ms 53772 KB Output is correct
11 Correct 127 ms 53876 KB Output is correct
12 Correct 187 ms 53840 KB Output is correct
13 Correct 150 ms 53804 KB Output is correct
14 Correct 3 ms 2380 KB Output is correct
15 Correct 260 ms 53784 KB Output is correct
16 Correct 104 ms 53828 KB Output is correct
17 Correct 122 ms 53840 KB Output is correct
18 Correct 107 ms 53832 KB Output is correct
19 Correct 138 ms 55132 KB Output is correct
20 Correct 150 ms 54888 KB Output is correct
21 Correct 103 ms 54980 KB Output is correct
22 Execution timed out 7085 ms 54920 KB Time limit exceeded
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2508 KB Output is correct
2 Correct 98 ms 53840 KB Output is correct
3 Correct 103 ms 53836 KB Output is correct
4 Correct 76 ms 53828 KB Output is correct
5 Correct 80 ms 53872 KB Output is correct
6 Correct 134 ms 53828 KB Output is correct
7 Correct 214 ms 53836 KB Output is correct
8 Correct 80 ms 53776 KB Output is correct
9 Correct 86 ms 53836 KB Output is correct
10 Correct 81 ms 53772 KB Output is correct
11 Correct 127 ms 53876 KB Output is correct
12 Correct 187 ms 53840 KB Output is correct
13 Correct 150 ms 53804 KB Output is correct
14 Correct 3 ms 2380 KB Output is correct
15 Correct 260 ms 53784 KB Output is correct
16 Correct 104 ms 53828 KB Output is correct
17 Correct 122 ms 53840 KB Output is correct
18 Correct 107 ms 53832 KB Output is correct
19 Correct 138 ms 55132 KB Output is correct
20 Correct 150 ms 54888 KB Output is correct
21 Correct 103 ms 54980 KB Output is correct
22 Execution timed out 7085 ms 54920 KB Time limit exceeded
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 2380 KB Output is correct
2 Correct 525 ms 414396 KB Output is correct
3 Correct 448 ms 415700 KB Output is correct
4 Correct 490 ms 415348 KB Output is correct
5 Correct 491 ms 415140 KB Output is correct
6 Correct 512 ms 415124 KB Output is correct
7 Correct 451 ms 414772 KB Output is correct
8 Correct 2 ms 2508 KB Output is correct
9 Correct 98 ms 53840 KB Output is correct
10 Correct 103 ms 53836 KB Output is correct
11 Correct 76 ms 53828 KB Output is correct
12 Correct 80 ms 53872 KB Output is correct
13 Correct 134 ms 53828 KB Output is correct
14 Correct 214 ms 53836 KB Output is correct
15 Correct 80 ms 53776 KB Output is correct
16 Correct 86 ms 53836 KB Output is correct
17 Correct 81 ms 53772 KB Output is correct
18 Correct 127 ms 53876 KB Output is correct
19 Correct 187 ms 53840 KB Output is correct
20 Correct 150 ms 53804 KB Output is correct
21 Correct 3 ms 2380 KB Output is correct
22 Correct 260 ms 53784 KB Output is correct
23 Correct 104 ms 53828 KB Output is correct
24 Correct 122 ms 53840 KB Output is correct
25 Correct 107 ms 53832 KB Output is correct
26 Correct 138 ms 55132 KB Output is correct
27 Correct 150 ms 54888 KB Output is correct
28 Correct 103 ms 54980 KB Output is correct
29 Execution timed out 7085 ms 54920 KB Time limit exceeded
30 Halted 0 ms 0 KB -