# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
687923 |
2023-01-27T04:43:51 Z |
vjudge1 |
Game (IOI13_game) |
C++17 |
|
7295 ms |
57228 KB |
#include <game.h>
#include <bits/stdc++.h>
#define int long long
#define ii pair<int,int>
#define ff first
#define ss second
using namespace std;
const int oo = 2e9;
struct node {
node *l, *r;
int wt, val, g;
ii co;
node (ii pos, int x)
{
l = r = 0;
wt = rand();
val = g = x;
co = pos;
}
};
#define nd node*
inline int gg(nd x) {return x ? x->g : 0;}
inline void upd(nd x) {x->g = __gcd(__gcd(gg(x->l), gg(x->r)), x->val);}
inline void merg(nd &x, nd l, nd r)
{
if (!l || !r) return void(x=l?l:r);
if (l->wt < r->wt) merg(r->l, l, r->l), x = r;
else merg(l->r, l->r, r), x = l;
upd(x);
}
inline void split(nd x, nd &l, nd &r, ii pos)
{
if (!x) return void(l=r=0);
if (x->co <= pos) split(x->r, x->r, r, pos), l = x;
else split(x->l, l, x->l, pos), r = x;
upd(x);
}
inline void ins(nd &x, ii pos, int val)
{
node *a, *b;
split(x, x, a, {pos.ff, pos.ss-1});
split(a, a, b, pos);
merg(x, x, new node(pos, val));
// merg(a, a, b);
merg(x, x, b);
}
inline int qry1(nd &x, int l, int r)
{
node *a, *b;
split(x, x, a, {l-1, oo});
split(a, a, b, {r, oo});
int ans = gg(a);
merg(a, a, b);
merg(x, x, a);
return ans;
}
struct Node {
Node *l, *r;
nd st;
Node() {
l = r = 0;
st = 0;
}
};
Node *root = new Node();
inline void upd(Node *&cur, int lx, int rx, int x, int y, int val)
{
if (!cur) cur = new Node();
ins(cur->st, {y, x}, val);
if (lx == rx) return;
int m = (lx + rx) >> 1;
if (x <= m) upd(cur->l, lx, m, x, y, val);
else upd(cur->r, m+1, rx, x, y, val);
}
inline int qry(Node *&x, int lb, int rb, int lx, int rx, int ly, int ry)
{
if (lx > rx || !x) return 0;
else if (lb == lx && rb == rx) return qry1(x->st, ly, ry);
int m = (lb + rb) >> 1;
return __gcd(qry(x->l, lb, m, lx, min(rx, m), ly, ry),
qry(x->r, m+1, rb, max(lx, m+1), rx, ly, ry));
}
int l1, r1;
void init(signed r, signed c) {
l1 = 0, r1 = r - 1;
}
void update(signed x, signed y, int k) {
upd(root, l1, r1, x, y, k);
}
int calculate(signed x, signed y, signed u, signed v) {
return qry(root, l1, r1, x, u, y, v);
}
//signed main()
//{
// ios_base::sync_with_stdio(false);
// cin.tie(nullptr); cout.tie(nullptr);
// init(2, 3);
// update(0, 0, 20);
// update(0, 2, 15);
// update(1, 1, 12);
// cerr<<calculate(0, 0, 0, 2)<<"\n";
// cerr<<calculate(0, 0, 1, 1)<<"\n";
// update(0, 1, 6);
// update(1, 1, 14);
// cerr<<calculate(0, 0, 0, 2)<<"\n";
// cerr<<calculate(0, 0, 1, 1)<<"\n";
//}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
793 ms |
7008 KB |
Output is correct |
5 |
Correct |
343 ms |
7372 KB |
Output is correct |
6 |
Correct |
1043 ms |
4104 KB |
Output is correct |
7 |
Correct |
1195 ms |
3772 KB |
Output is correct |
8 |
Correct |
783 ms |
3272 KB |
Output is correct |
9 |
Correct |
1198 ms |
3900 KB |
Output is correct |
10 |
Correct |
997 ms |
3660 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
0 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
212 KB |
Output is correct |
12 |
Correct |
1283 ms |
11204 KB |
Output is correct |
13 |
Correct |
3510 ms |
8048 KB |
Output is correct |
14 |
Correct |
552 ms |
8268 KB |
Output is correct |
15 |
Correct |
3740 ms |
8532 KB |
Output is correct |
16 |
Correct |
435 ms |
8588 KB |
Output is correct |
17 |
Correct |
1720 ms |
5204 KB |
Output is correct |
18 |
Correct |
3234 ms |
8876 KB |
Output is correct |
19 |
Correct |
2489 ms |
9016 KB |
Output is correct |
20 |
Correct |
2248 ms |
8400 KB |
Output is correct |
21 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
212 KB |
Output is correct |
12 |
Correct |
797 ms |
6956 KB |
Output is correct |
13 |
Correct |
347 ms |
7488 KB |
Output is correct |
14 |
Correct |
1039 ms |
4232 KB |
Output is correct |
15 |
Correct |
1223 ms |
3864 KB |
Output is correct |
16 |
Correct |
804 ms |
3320 KB |
Output is correct |
17 |
Correct |
1150 ms |
3904 KB |
Output is correct |
18 |
Correct |
995 ms |
3748 KB |
Output is correct |
19 |
Correct |
1296 ms |
11300 KB |
Output is correct |
20 |
Correct |
3529 ms |
7868 KB |
Output is correct |
21 |
Correct |
554 ms |
8416 KB |
Output is correct |
22 |
Correct |
3702 ms |
8612 KB |
Output is correct |
23 |
Correct |
406 ms |
8684 KB |
Output is correct |
24 |
Correct |
1659 ms |
5252 KB |
Output is correct |
25 |
Correct |
2968 ms |
8916 KB |
Output is correct |
26 |
Correct |
2445 ms |
9048 KB |
Output is correct |
27 |
Correct |
2228 ms |
8680 KB |
Output is correct |
28 |
Correct |
898 ms |
25748 KB |
Output is correct |
29 |
Correct |
1699 ms |
28804 KB |
Output is correct |
30 |
Correct |
4646 ms |
23152 KB |
Output is correct |
31 |
Correct |
4240 ms |
22692 KB |
Output is correct |
32 |
Correct |
811 ms |
20100 KB |
Output is correct |
33 |
Correct |
1163 ms |
20368 KB |
Output is correct |
34 |
Correct |
462 ms |
25964 KB |
Output is correct |
35 |
Correct |
1880 ms |
14116 KB |
Output is correct |
36 |
Correct |
3682 ms |
26196 KB |
Output is correct |
37 |
Correct |
2875 ms |
26596 KB |
Output is correct |
38 |
Correct |
2741 ms |
25888 KB |
Output is correct |
39 |
Correct |
2459 ms |
20548 KB |
Output is correct |
40 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
1 ms |
212 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
212 KB |
Output is correct |
11 |
Correct |
1 ms |
212 KB |
Output is correct |
12 |
Correct |
816 ms |
7016 KB |
Output is correct |
13 |
Correct |
347 ms |
7424 KB |
Output is correct |
14 |
Correct |
1062 ms |
4104 KB |
Output is correct |
15 |
Correct |
1196 ms |
3796 KB |
Output is correct |
16 |
Correct |
795 ms |
3232 KB |
Output is correct |
17 |
Correct |
1159 ms |
3960 KB |
Output is correct |
18 |
Correct |
1002 ms |
3608 KB |
Output is correct |
19 |
Correct |
1281 ms |
11180 KB |
Output is correct |
20 |
Correct |
3523 ms |
8028 KB |
Output is correct |
21 |
Correct |
561 ms |
8376 KB |
Output is correct |
22 |
Correct |
3694 ms |
8728 KB |
Output is correct |
23 |
Correct |
401 ms |
8632 KB |
Output is correct |
24 |
Correct |
1693 ms |
5388 KB |
Output is correct |
25 |
Correct |
2866 ms |
8964 KB |
Output is correct |
26 |
Correct |
2453 ms |
9092 KB |
Output is correct |
27 |
Correct |
2211 ms |
8608 KB |
Output is correct |
28 |
Correct |
897 ms |
25796 KB |
Output is correct |
29 |
Correct |
1673 ms |
28924 KB |
Output is correct |
30 |
Correct |
4578 ms |
23420 KB |
Output is correct |
31 |
Correct |
4183 ms |
22680 KB |
Output is correct |
32 |
Correct |
804 ms |
20284 KB |
Output is correct |
33 |
Correct |
1146 ms |
20232 KB |
Output is correct |
34 |
Correct |
460 ms |
25948 KB |
Output is correct |
35 |
Correct |
1891 ms |
14012 KB |
Output is correct |
36 |
Correct |
3599 ms |
26400 KB |
Output is correct |
37 |
Correct |
2816 ms |
26404 KB |
Output is correct |
38 |
Correct |
2682 ms |
25704 KB |
Output is correct |
39 |
Correct |
1238 ms |
55044 KB |
Output is correct |
40 |
Correct |
2747 ms |
57228 KB |
Output is correct |
41 |
Correct |
7295 ms |
49580 KB |
Output is correct |
42 |
Correct |
6362 ms |
48256 KB |
Output is correct |
43 |
Correct |
757 ms |
55176 KB |
Output is correct |
44 |
Correct |
1350 ms |
43492 KB |
Output is correct |
45 |
Correct |
2412 ms |
20532 KB |
Output is correct |
46 |
Correct |
4863 ms |
55412 KB |
Output is correct |
47 |
Correct |
4742 ms |
55512 KB |
Output is correct |
48 |
Correct |
4285 ms |
54960 KB |
Output is correct |
49 |
Correct |
0 ms |
212 KB |
Output is correct |