# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1224112 | candi_ositos | Dungeons Game (IOI21_dungeons) | C++20 | 0 ms | 0 KiB |
#include "dungeons.h"
#include <bits/stdc++.h>
/*
int main() {
static int n, q;
static std::vector<int> s, p, z;
static std::vector<int> w, l, x;
static std::vector<long long> answer;
assert(scanf("%d %d", &n, &q) == 2);
s.resize(n);
p.resize(n);
w.resize(n);
l.resize(n);
x.resize(q);
z.resize(q);
answer.resize(q);
for (int i = 0; i < n; i++) {
assert(scanf("%d", &s[i]) == 1);
}
for (int i = 0; i < n; i++) {
assert(scanf("%d", &p[i]) == 1);
}
for (int i = 0; i < n; i++) {
assert(scanf("%d", &w[i]) == 1);
}
for (int i = 0; i < n; i++) {
assert(scanf("%d", &l[i]) == 1);
}
init(n, s, p, w, l);
for (int i = 0; i < q; i++) {
assert(scanf("%d %d", &x[i], &z[i]) == 2);
answer[i] = simulate(x[i], z[i]);
}
fclose(stdin);
for (int i = 0; i < q; i++) {
printf("%lld\n", answer[i]);
}
fclose(stdout);
return 0;
}*/
int n;
vector <int> s, p, w, l;
void init(int N, vector <int> S, vector <int> P, vector <int> W, vector <int> L)
{
n=N;
s.resize(n);
p.resize(n);
w.resize(n);
l.resize(n);
for(int i=0; i<n; ++i)
{
s[i]=S[i];
p[i]=P[i];
w[i]=W[i];
l[i]=L[i];
}
}
int64 simulate(int x, int z)
{
if(x==n)
{
return z;
}
if(z<s[x])
{
z+=p[x];
return(simulate(l[x], z));
}
z+=s[x];
return(simulate(w[x], z));
}