#include "bits/stdc++.h"
using namespace std;
using ll = long long;
const ll inf = 1e9;
using vi = vector<int>;
using ai = array<ll, 2>;
#define sz(v) ((int)v.size())
#define pb push_back
#define pry cout << "YES\n"
#define prn cout << "NO\n"
#define endl '\n'
#define fst first
#define scn second
/* #define ONPC */
const int K = 27;
vector<array<array<ll, 3>, 27>> j;
vector<array<ai, 27>> f;
vector<ll> d;
vi s, p, w, l;
int n;
void
init(int _n, vi _s, vi _p, vi _w, vi _l)
{
n = _n;
s = _s;
p = _p;
w = _w;
l = _l;
j.assign(n+1,{{}});
f.assign(n+1,{{}});
d.assign(n+1, 0);
s.pb(0);
p.pb(0);
l.pb(n);
w.pb(n);
f[n][0] = {n,0};
j[n][0] = {n,0,0};
for (int i = n-1; i >= 0; --i) {
d[i] = d[w[i]] + s[i];
f[i][0] = {w[i], d[i]+s[i]};
j[i][0] = {l[i], p[i], s[l[i]] - p[i]};
}
for (int k = 1; k < K; ++k) {
for (int i = 0; i <= n; ++i) {
f[i][k][0] = f[f[i][k-1][0]][k-1][0];
f[i][k][1] = max(f[i][k-1][1], f[f[i][k-1][0]][k-1][1]);
j[i][k][0] = j[j[i][k-1][0]][k-1][0];
j[i][k][1] = j[i][k-1][1] + j[j[i][k-1][0]][k-1][1];
j[i][k][2] = min(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 _z)
{
ll z = _z;
while (x < n) {
/* cout << x << ' ' << z << ' ' << s[x] << endl; */
if (z >= s[x]) {
for (int k = K-1; k >= 0; --k) {
if (z + d[x] >= f[x][k][1]) {
z += d[x];
x = f[x][k][0];
z -= d[x];
}
}
/* z += s[x]; */
/* x = w[x]; */
} else {
for (int k = K-1; k >= 0; --k) {
if (z < j[x][k][2])
{
z += j[x][k][1];
x = j[x][k][0];
}
}
z += p[x];
x = l[x];
}
}
assert(x == n);
return z;
}
#ifdef ONPC
void
solve()
{
int n, q;
cin >> n >> q;
vector<int> s(n), p(n), w(n) ,l(n);
for (int i = 0; i < n; ++i) cin >> s[i];
for (int i = 0; i < n; ++i) cin >> p[i];
for (int i = 0; i < n; ++i) cin >> w[i];
for (int i = 0; i < n; ++i) cin >> l[i];
init(n,s,p,w,l);
int z, x;
while (q--) {
cin >> x >> z;
cout << simulate(x,z) << endl;
}
}
int32_t
main(int argc, char **argv)
{
if (argc >= 2) {
freopen(argv[1], "r", stdin);
} else
ios_base::sync_with_stdio(0);cin.tie(0);
int t = 1;
/* cin >> t; */
while(t--)
solve();
}
#endif
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
3 ms |
2516 KB |
Output is correct |
4 |
Correct |
94 ms |
57120 KB |
Output is correct |
5 |
Correct |
3 ms |
2484 KB |
Output is correct |
6 |
Correct |
75 ms |
56968 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1516 KB |
Output is correct |
2 |
Correct |
716 ms |
454184 KB |
Output is correct |
3 |
Correct |
732 ms |
454284 KB |
Output is correct |
4 |
Correct |
770 ms |
455696 KB |
Output is correct |
5 |
Correct |
691 ms |
455696 KB |
Output is correct |
6 |
Correct |
733 ms |
454176 KB |
Output is correct |
7 |
Correct |
671 ms |
452380 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1492 KB |
Output is correct |
2 |
Correct |
142 ms |
58360 KB |
Output is correct |
3 |
Correct |
127 ms |
58428 KB |
Output is correct |
4 |
Correct |
109 ms |
57948 KB |
Output is correct |
5 |
Correct |
125 ms |
57848 KB |
Output is correct |
6 |
Correct |
107 ms |
58120 KB |
Output is correct |
7 |
Correct |
107 ms |
58124 KB |
Output is correct |
8 |
Correct |
108 ms |
57860 KB |
Output is correct |
9 |
Correct |
107 ms |
57852 KB |
Output is correct |
10 |
Correct |
103 ms |
57736 KB |
Output is correct |
11 |
Correct |
136 ms |
58108 KB |
Output is correct |
12 |
Correct |
202 ms |
58108 KB |
Output is correct |
13 |
Correct |
183 ms |
58068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1492 KB |
Output is correct |
2 |
Correct |
142 ms |
58360 KB |
Output is correct |
3 |
Correct |
127 ms |
58428 KB |
Output is correct |
4 |
Correct |
109 ms |
57948 KB |
Output is correct |
5 |
Correct |
125 ms |
57848 KB |
Output is correct |
6 |
Correct |
107 ms |
58120 KB |
Output is correct |
7 |
Correct |
107 ms |
58124 KB |
Output is correct |
8 |
Correct |
108 ms |
57860 KB |
Output is correct |
9 |
Correct |
107 ms |
57852 KB |
Output is correct |
10 |
Correct |
103 ms |
57736 KB |
Output is correct |
11 |
Correct |
136 ms |
58108 KB |
Output is correct |
12 |
Correct |
202 ms |
58108 KB |
Output is correct |
13 |
Correct |
183 ms |
58068 KB |
Output is correct |
14 |
Correct |
3 ms |
1492 KB |
Output is correct |
15 |
Correct |
313 ms |
58224 KB |
Output is correct |
16 |
Correct |
120 ms |
58376 KB |
Output is correct |
17 |
Correct |
132 ms |
57852 KB |
Output is correct |
18 |
Correct |
126 ms |
57980 KB |
Output is correct |
19 |
Correct |
131 ms |
58216 KB |
Output is correct |
20 |
Correct |
139 ms |
57848 KB |
Output is correct |
21 |
Correct |
111 ms |
57976 KB |
Output is correct |
22 |
Execution timed out |
7047 ms |
57952 KB |
Time limit exceeded |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1492 KB |
Output is correct |
2 |
Correct |
142 ms |
58360 KB |
Output is correct |
3 |
Correct |
127 ms |
58428 KB |
Output is correct |
4 |
Correct |
109 ms |
57948 KB |
Output is correct |
5 |
Correct |
125 ms |
57848 KB |
Output is correct |
6 |
Correct |
107 ms |
58120 KB |
Output is correct |
7 |
Correct |
107 ms |
58124 KB |
Output is correct |
8 |
Correct |
108 ms |
57860 KB |
Output is correct |
9 |
Correct |
107 ms |
57852 KB |
Output is correct |
10 |
Correct |
103 ms |
57736 KB |
Output is correct |
11 |
Correct |
136 ms |
58108 KB |
Output is correct |
12 |
Correct |
202 ms |
58108 KB |
Output is correct |
13 |
Correct |
183 ms |
58068 KB |
Output is correct |
14 |
Correct |
3 ms |
1492 KB |
Output is correct |
15 |
Correct |
313 ms |
58224 KB |
Output is correct |
16 |
Correct |
120 ms |
58376 KB |
Output is correct |
17 |
Correct |
132 ms |
57852 KB |
Output is correct |
18 |
Correct |
126 ms |
57980 KB |
Output is correct |
19 |
Correct |
131 ms |
58216 KB |
Output is correct |
20 |
Correct |
139 ms |
57848 KB |
Output is correct |
21 |
Correct |
111 ms |
57976 KB |
Output is correct |
22 |
Execution timed out |
7047 ms |
57952 KB |
Time limit exceeded |
23 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
1516 KB |
Output is correct |
2 |
Correct |
716 ms |
454184 KB |
Output is correct |
3 |
Correct |
732 ms |
454284 KB |
Output is correct |
4 |
Correct |
770 ms |
455696 KB |
Output is correct |
5 |
Correct |
691 ms |
455696 KB |
Output is correct |
6 |
Correct |
733 ms |
454176 KB |
Output is correct |
7 |
Correct |
671 ms |
452380 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
142 ms |
58360 KB |
Output is correct |
10 |
Correct |
127 ms |
58428 KB |
Output is correct |
11 |
Correct |
109 ms |
57948 KB |
Output is correct |
12 |
Correct |
125 ms |
57848 KB |
Output is correct |
13 |
Correct |
107 ms |
58120 KB |
Output is correct |
14 |
Correct |
107 ms |
58124 KB |
Output is correct |
15 |
Correct |
108 ms |
57860 KB |
Output is correct |
16 |
Correct |
107 ms |
57852 KB |
Output is correct |
17 |
Correct |
103 ms |
57736 KB |
Output is correct |
18 |
Correct |
136 ms |
58108 KB |
Output is correct |
19 |
Correct |
202 ms |
58108 KB |
Output is correct |
20 |
Correct |
183 ms |
58068 KB |
Output is correct |
21 |
Correct |
3 ms |
1492 KB |
Output is correct |
22 |
Correct |
313 ms |
58224 KB |
Output is correct |
23 |
Correct |
120 ms |
58376 KB |
Output is correct |
24 |
Correct |
132 ms |
57852 KB |
Output is correct |
25 |
Correct |
126 ms |
57980 KB |
Output is correct |
26 |
Correct |
131 ms |
58216 KB |
Output is correct |
27 |
Correct |
139 ms |
57848 KB |
Output is correct |
28 |
Correct |
111 ms |
57976 KB |
Output is correct |
29 |
Execution timed out |
7047 ms |
57952 KB |
Time limit exceeded |
30 |
Halted |
0 ms |
0 KB |
- |