# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
956452 |
2024-04-02T01:00:46 Z |
abczz |
Game (IOI13_game) |
C++14 |
|
2472 ms |
256000 KB |
#include "game.h"
#include <iostream>
#include <vector>
#include <numeric>
#define ll long long
using namespace std;
ll gcd(ll a, ll b) {
if (!b) return a;
else if (!a) return b;
else return gcd(b%a, a);
}
struct SegTree{
struct Node{
ll val;
int chl;
int chr;
};
int cnt = 0;
Node st[20000000];
void get(int &id) {
if (id != -1) return;
st[cnt] = {0, -1, -1};
id = cnt++;
}
void updateC(int &id, int idl, int idr, int l, int r, int y, ll w) {
get(id);
if (l == r) {
if (idl == -1 && idr == -1) st[id].val = w;
else st[id].val = gcd((idl != -1 ? st[idl].val : 0), (idr != -1 ? st[idr].val : 0));
return;
}
int mid = (l+r)/2;
if (y <= mid) {
int tmp = st[id].chl;
updateC(tmp, (idl != -1 ? st[idl].chl : -1), (idr != -1 ? st[idr].chl : -1), l, mid, y, w);
st[id].chl = tmp;
}
else {
int tmp = st[id].chr;
updateC(tmp, (idl != -1 ? st[idl].chr : -1), (idr != -1 ? st[idr].chr : -1), mid+1, r, y, w);
st[id].chr = tmp;
}
st[id].val = gcd((st[id].chl != -1 ? st[st[id].chl].val : 0), (st[id].chr != -1 ? st[st[id].chr].val : 0));
}
void updateR(int &id, int l, int r, int x, int y, ll w) {
get(id);
if (id+1 == cnt) {
int tmp = -1;
get(tmp);
}
int tmp = id+1;
if (l == r) {
updateC(tmp, -1, -1, 0, (int)1e9-1, y, w);
st[id].val = st[id+1].val;
return;
}
int mid = (l+r)/2;
if (x <= mid) {
int tmp = st[id].chl;
updateR(tmp, l, mid, x, y, w);
st[id].chl = tmp;
}
else {
int tmp = st[id].chr;
updateR(tmp, mid+1, r, x, y, w);
st[id].chr = tmp;
}
updateC(tmp, (st[id].chl != -1 ? st[id].chl+1 : -1), (st[id].chr != -1 ? st[id].chr+1 : -1), 0, (ll)1e9-1, y, w);
st[id].val = gcd((st[id].chl != -1 ? st[st[id].chl].val : 0), (st[id].chr != -1 ? st[st[id].chr].val : 0));
}
ll queryC(int id, int l, int r, int ql, int qr) {
if (id == -1 || qr < l || r < ql) return 0;
else if (ql <= l && r <= qr) {
return st[id].val;
}
int mid = (l+r)/2;
return gcd(queryC(st[id].chl, l, mid, ql, qr), queryC(st[id].chr, mid+1, r, ql, qr));
}
ll queryR(int id, int l, int r, int ql, int qr, int qx, int qy) {
if (id == -1 || qr < l || r < ql) return 0;
else if (ql <= l && r <= qr) return queryC(id+1, 0, (int)1e9-1, qx, qy);
int mid = (l+r)/2;
return gcd(queryR(st[id].chl, l, mid, ql, qr, qx, qy), queryR(st[id].chr, mid+1, r, ql, qr, qx, qy));
}
}ST;
void init(int R, int C) {
int rt = -1;
ST.get(rt);
}
void update(int P, int Q, long long K) {
int rt = 0;
ST.updateR(rt, 0, (int)1e9-1, P, Q, K);
}
long long calculate(int P, int Q, int U, int V) {
int rt = 0;
return ST.queryR(rt, 0, (int)1e9-1, P, U, Q, V);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
2 ms |
2652 KB |
Output is correct |
3 |
Correct |
2 ms |
2652 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
444 KB |
Output is correct |
6 |
Correct |
2 ms |
2652 KB |
Output is correct |
7 |
Correct |
0 ms |
448 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
604 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
440 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
499 ms |
33464 KB |
Output is correct |
5 |
Correct |
405 ms |
33376 KB |
Output is correct |
6 |
Correct |
543 ms |
30996 KB |
Output is correct |
7 |
Correct |
528 ms |
30544 KB |
Output is correct |
8 |
Correct |
392 ms |
20892 KB |
Output is correct |
9 |
Correct |
546 ms |
30864 KB |
Output is correct |
10 |
Correct |
494 ms |
30344 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
2 ms |
2652 KB |
Output is correct |
3 |
Correct |
3 ms |
2652 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
2 ms |
2652 KB |
Output is correct |
7 |
Correct |
0 ms |
440 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
604 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
796 ms |
16972 KB |
Output is correct |
13 |
Correct |
1109 ms |
9344 KB |
Output is correct |
14 |
Correct |
453 ms |
5824 KB |
Output is correct |
15 |
Correct |
1252 ms |
11776 KB |
Output is correct |
16 |
Correct |
383 ms |
17744 KB |
Output is correct |
17 |
Correct |
719 ms |
14908 KB |
Output is correct |
18 |
Correct |
1087 ms |
19220 KB |
Output is correct |
19 |
Correct |
940 ms |
19240 KB |
Output is correct |
20 |
Correct |
873 ms |
19148 KB |
Output is correct |
21 |
Correct |
1 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
2 ms |
2652 KB |
Output is correct |
3 |
Correct |
2 ms |
2492 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
1 ms |
440 KB |
Output is correct |
6 |
Correct |
2 ms |
2652 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
388 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
348 KB |
Output is correct |
12 |
Correct |
500 ms |
33636 KB |
Output is correct |
13 |
Correct |
406 ms |
33308 KB |
Output is correct |
14 |
Correct |
490 ms |
30744 KB |
Output is correct |
15 |
Correct |
541 ms |
30548 KB |
Output is correct |
16 |
Correct |
359 ms |
20820 KB |
Output is correct |
17 |
Correct |
514 ms |
30580 KB |
Output is correct |
18 |
Correct |
492 ms |
30460 KB |
Output is correct |
19 |
Correct |
808 ms |
17204 KB |
Output is correct |
20 |
Correct |
1098 ms |
9532 KB |
Output is correct |
21 |
Correct |
440 ms |
5600 KB |
Output is correct |
22 |
Correct |
1301 ms |
11736 KB |
Output is correct |
23 |
Correct |
399 ms |
17688 KB |
Output is correct |
24 |
Correct |
727 ms |
15060 KB |
Output is correct |
25 |
Correct |
1034 ms |
19084 KB |
Output is correct |
26 |
Correct |
966 ms |
19480 KB |
Output is correct |
27 |
Correct |
922 ms |
18804 KB |
Output is correct |
28 |
Correct |
415 ms |
136784 KB |
Output is correct |
29 |
Correct |
936 ms |
151536 KB |
Output is correct |
30 |
Correct |
2472 ms |
109072 KB |
Output is correct |
31 |
Correct |
2349 ms |
86228 KB |
Output is correct |
32 |
Correct |
350 ms |
12496 KB |
Output is correct |
33 |
Correct |
474 ms |
12224 KB |
Output is correct |
34 |
Correct |
263 ms |
145124 KB |
Output is correct |
35 |
Correct |
715 ms |
81612 KB |
Output is correct |
36 |
Correct |
1262 ms |
149360 KB |
Output is correct |
37 |
Correct |
1044 ms |
149640 KB |
Output is correct |
38 |
Correct |
1066 ms |
149284 KB |
Output is correct |
39 |
Correct |
923 ms |
117072 KB |
Output is correct |
40 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
344 KB |
Output is correct |
2 |
Correct |
2 ms |
2652 KB |
Output is correct |
3 |
Correct |
2 ms |
2652 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
2 ms |
2652 KB |
Output is correct |
7 |
Correct |
1 ms |
344 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
604 KB |
Output is correct |
10 |
Correct |
1 ms |
348 KB |
Output is correct |
11 |
Correct |
1 ms |
344 KB |
Output is correct |
12 |
Correct |
506 ms |
33616 KB |
Output is correct |
13 |
Correct |
396 ms |
33360 KB |
Output is correct |
14 |
Correct |
537 ms |
30764 KB |
Output is correct |
15 |
Correct |
541 ms |
30676 KB |
Output is correct |
16 |
Correct |
392 ms |
20816 KB |
Output is correct |
17 |
Correct |
507 ms |
30724 KB |
Output is correct |
18 |
Correct |
493 ms |
30472 KB |
Output is correct |
19 |
Correct |
823 ms |
16928 KB |
Output is correct |
20 |
Correct |
1113 ms |
9300 KB |
Output is correct |
21 |
Correct |
391 ms |
5980 KB |
Output is correct |
22 |
Correct |
1303 ms |
12008 KB |
Output is correct |
23 |
Correct |
372 ms |
17740 KB |
Output is correct |
24 |
Correct |
725 ms |
14848 KB |
Output is correct |
25 |
Correct |
1016 ms |
19068 KB |
Output is correct |
26 |
Correct |
968 ms |
19428 KB |
Output is correct |
27 |
Correct |
885 ms |
18768 KB |
Output is correct |
28 |
Correct |
405 ms |
136876 KB |
Output is correct |
29 |
Correct |
949 ms |
151752 KB |
Output is correct |
30 |
Correct |
2455 ms |
109260 KB |
Output is correct |
31 |
Correct |
2332 ms |
85064 KB |
Output is correct |
32 |
Correct |
354 ms |
12656 KB |
Output is correct |
33 |
Correct |
453 ms |
12300 KB |
Output is correct |
34 |
Correct |
273 ms |
145176 KB |
Output is correct |
35 |
Correct |
640 ms |
81336 KB |
Output is correct |
36 |
Correct |
1319 ms |
149572 KB |
Output is correct |
37 |
Correct |
1043 ms |
149588 KB |
Output is correct |
38 |
Correct |
1010 ms |
149072 KB |
Output is correct |
39 |
Runtime error |
646 ms |
256000 KB |
Execution killed with signal 9 |
40 |
Halted |
0 ms |
0 KB |
- |