#include <bits/stdc++.h>
#include "dungeons.h"
using namespace std;
using ll = long long;
vector<vector<pair<int,ll>>> blw,bll;
int n;
bool st3 = true;
vector<vector<pair<int,ll>>> build(vector<int> nxt,vector<int> add){
vector<vector<pair<int,ll>>> bl(n + 1,vector<pair<int,ll>>(30));
for(int i = 0; i < n; i++){
bl[i][0] = {nxt[i],add[i]};
}
bl[n][0].first = n;
for(int j = 1; j < 30; j++){
for(int i = 0; i <= n; i++){
bl[i][j].first = bl[bl[i][j - 1].first][j - 1].first;
bl[i][j].second = bl[i][j - 1].second + bl[bl[i][j - 1].first][j - 1].second;
}
}
return bl;
}
void init(int _n, vector<int> s, vector<int> p, vector<int> w, vector<int> l){
n = _n;
blw = build(w,s);
bll = build(l,p);
for(int i = 0; i < n; i++){
st3 &= s[i] == s[0];
}
}
long long simulate(int x, int z){
ll res = z;
if(st3){
for(int i = 29; i >= 0; i--){
if(res + bll[x][i].second < blw[0][0].second){
res += bll[x][i].second;
x = bll[x][i].first;
}
}
if(res < blw[0][0].second){
res += bll[x][0].second;
x = bll[x][0].first;
}
for(int i = 29; i >= 0; i--){
if(blw[x][i].first != n){
res += blw[x][i].second;
x = blw[x][i].first;
}
}
return res + blw[x][0].second;
}
while(x != n){
if(res < blw[x][0].second){
res += bll[x][0].second;
x = bll[x][0].first;
}else{
res += blw[x][0].second;
x = blw[x][0].first;
}
}
return res;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
3 ms |
2380 KB |
Output is correct |
4 |
Correct |
103 ms |
53012 KB |
Output is correct |
5 |
Correct |
4 ms |
2380 KB |
Output is correct |
6 |
Correct |
106 ms |
53040 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1356 KB |
Output is correct |
2 |
Execution timed out |
7136 ms |
423688 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1344 KB |
Output is correct |
2 |
Correct |
175 ms |
53824 KB |
Output is correct |
3 |
Correct |
202 ms |
53832 KB |
Output is correct |
4 |
Correct |
175 ms |
53816 KB |
Output is correct |
5 |
Correct |
188 ms |
53816 KB |
Output is correct |
6 |
Correct |
152 ms |
53816 KB |
Output is correct |
7 |
Correct |
158 ms |
53812 KB |
Output is correct |
8 |
Correct |
190 ms |
53908 KB |
Output is correct |
9 |
Correct |
171 ms |
53820 KB |
Output is correct |
10 |
Correct |
190 ms |
53908 KB |
Output is correct |
11 |
Correct |
152 ms |
53824 KB |
Output is correct |
12 |
Correct |
312 ms |
53820 KB |
Output is correct |
13 |
Correct |
266 ms |
53804 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1344 KB |
Output is correct |
2 |
Correct |
175 ms |
53824 KB |
Output is correct |
3 |
Correct |
202 ms |
53832 KB |
Output is correct |
4 |
Correct |
175 ms |
53816 KB |
Output is correct |
5 |
Correct |
188 ms |
53816 KB |
Output is correct |
6 |
Correct |
152 ms |
53816 KB |
Output is correct |
7 |
Correct |
158 ms |
53812 KB |
Output is correct |
8 |
Correct |
190 ms |
53908 KB |
Output is correct |
9 |
Correct |
171 ms |
53820 KB |
Output is correct |
10 |
Correct |
190 ms |
53908 KB |
Output is correct |
11 |
Correct |
152 ms |
53824 KB |
Output is correct |
12 |
Correct |
312 ms |
53820 KB |
Output is correct |
13 |
Correct |
266 ms |
53804 KB |
Output is correct |
14 |
Correct |
3 ms |
1356 KB |
Output is correct |
15 |
Correct |
288 ms |
55360 KB |
Output is correct |
16 |
Correct |
178 ms |
55492 KB |
Output is correct |
17 |
Execution timed out |
7051 ms |
54960 KB |
Time limit exceeded |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1344 KB |
Output is correct |
2 |
Correct |
175 ms |
53824 KB |
Output is correct |
3 |
Correct |
202 ms |
53832 KB |
Output is correct |
4 |
Correct |
175 ms |
53816 KB |
Output is correct |
5 |
Correct |
188 ms |
53816 KB |
Output is correct |
6 |
Correct |
152 ms |
53816 KB |
Output is correct |
7 |
Correct |
158 ms |
53812 KB |
Output is correct |
8 |
Correct |
190 ms |
53908 KB |
Output is correct |
9 |
Correct |
171 ms |
53820 KB |
Output is correct |
10 |
Correct |
190 ms |
53908 KB |
Output is correct |
11 |
Correct |
152 ms |
53824 KB |
Output is correct |
12 |
Correct |
312 ms |
53820 KB |
Output is correct |
13 |
Correct |
266 ms |
53804 KB |
Output is correct |
14 |
Correct |
3 ms |
1356 KB |
Output is correct |
15 |
Correct |
288 ms |
55360 KB |
Output is correct |
16 |
Correct |
178 ms |
55492 KB |
Output is correct |
17 |
Execution timed out |
7051 ms |
54960 KB |
Time limit exceeded |
18 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1356 KB |
Output is correct |
2 |
Execution timed out |
7136 ms |
423688 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |