# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
4624 |
2013-11-13T02:50:55 Z |
cki86201 |
Game (IOI13_game) |
C++ |
|
8452 ms |
76316 KB |
#include "game.h"
#include<stdlib.h>
typedef long long ll;
int R,C;
ll gc(ll x,ll y){
ll tmp=-1;
while(x!=tmp&&y)tmp=x,x=y,y=tmp%y;
return x;
}
struct node1{
node1(){}
node1(int s,int d,ll x):s(s),d(d),x(x),right(0),left(0){}
int s,d;
ll x;
node1 *right,*left;
};
struct node2{
node1 *x;
node2 *right,*left;
}*tree;
void init(int R, int C){
::R=R,::C=C;
tree = new node2();
}
void update1(node1 *R,int u,ll K)
{
int s = R->s,d = R->d;
if(s == d){R->x = K;return;}
int m = (s+d)>>1;
node1 **t = &(u<=m?R->left:R->right);
if(*t==NULL)*t = new node1(u,u,K);
else if((*t)->s<=u && u<=(*t)->d)update1(*t,u,K);
else{
while((u>m) ^ ((*t)->s<=m)){
if(u<=m)d=m;
else s=m+1;
m=(s+d)>>1;
}
node1 *n = new node1(s,d,0);
if((*t)->s<=m)n->left = *t;
else n->right = *t;
*t = n;
update1(n,u,K);
}
R->x = gc(R->left?R->left->x:0,R->right?R->right->x:0);
}
ll read1(node1 *R,int l,int r)
{
if(!R)return 0;
int s = R->s, d = R->d;
if(d<l||r<s)return 0;
if(l<=s&&d<=r)return R->x;
return gc(R->left?read1(R->left,l,r):0,R->right?read1(R->right,l,r):0);
}
void update2(node2 *R,int u1,int u2,int s,int d,ll K)
{
if(s==d){
if(!R->x)R->x = new node1(1,C,0);
update1(R->x,u2,K);
return;
}
int m = (s+d)>>1;
if(u1<=m){
if(!R->left)R->left = new node2();
update2(R->left,u1,u2,s,m,K);
}
else{
if(!R->right)R->right =new node2();
update2(R->right,u1,u2,m+1,d,K);
}
ll L = gc((R->left)?read1(R->left->x,u2,u2):0,(R->right)?read1(R->right->x,u2,u2):0);
if(!R->x)R->x = new node1(1,C,0);
update1(R->x,u2,L);
}
ll read2(node2 *R,int l1,int r1,int l2,int r2,int s,int d)
{
int m = (s+d)>>1;
if(l1<=s&&d<=r1)return read1(R->x,l2,r2);
if(r1<s||d<l1)return 0;
return gc((R->left)?read2(R->left,l1,r1,l2,r2,s,m):0,(R->right)?read2(R->right,l1,r1,l2,r2,m+1,d):0);
}
void update(int P, int Q, ll K){
++P,++Q;
update2(tree,P,Q,1,R,K);
}
ll calculate(int P, int Q, int U, int V){
++P,++Q,++U,++V;
return read2(tree,P,U,Q,V,1,R);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1208 KB |
Output is correct |
2 |
Correct |
0 ms |
1208 KB |
Output is correct |
3 |
Correct |
0 ms |
1208 KB |
Output is correct |
4 |
Correct |
0 ms |
1208 KB |
Output is correct |
5 |
Correct |
0 ms |
1208 KB |
Output is correct |
6 |
Correct |
0 ms |
1208 KB |
Output is correct |
7 |
Correct |
0 ms |
1208 KB |
Output is correct |
8 |
Correct |
0 ms |
1208 KB |
Output is correct |
9 |
Correct |
0 ms |
1208 KB |
Output is correct |
10 |
Correct |
0 ms |
1208 KB |
Output is correct |
11 |
Correct |
0 ms |
1208 KB |
Output is correct |
12 |
Correct |
0 ms |
1208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1208 KB |
Output is correct |
2 |
Correct |
0 ms |
1208 KB |
Output is correct |
3 |
Correct |
0 ms |
1208 KB |
Output is correct |
4 |
Correct |
928 ms |
5168 KB |
Output is correct |
5 |
Correct |
652 ms |
5168 KB |
Output is correct |
6 |
Correct |
740 ms |
5168 KB |
Output is correct |
7 |
Correct |
864 ms |
5168 KB |
Output is correct |
8 |
Correct |
536 ms |
3056 KB |
Output is correct |
9 |
Correct |
852 ms |
5168 KB |
Output is correct |
10 |
Correct |
808 ms |
5168 KB |
Output is correct |
11 |
Correct |
0 ms |
1208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1208 KB |
Output is correct |
2 |
Correct |
0 ms |
1208 KB |
Output is correct |
3 |
Correct |
0 ms |
1208 KB |
Output is correct |
4 |
Correct |
0 ms |
1208 KB |
Output is correct |
5 |
Correct |
0 ms |
1208 KB |
Output is correct |
6 |
Correct |
0 ms |
1208 KB |
Output is correct |
7 |
Correct |
0 ms |
1208 KB |
Output is correct |
8 |
Correct |
0 ms |
1208 KB |
Output is correct |
9 |
Correct |
0 ms |
1208 KB |
Output is correct |
10 |
Correct |
0 ms |
1208 KB |
Output is correct |
11 |
Correct |
0 ms |
1208 KB |
Output is correct |
12 |
Correct |
1760 ms |
8336 KB |
Output is correct |
13 |
Correct |
3396 ms |
5036 KB |
Output is correct |
14 |
Correct |
372 ms |
1208 KB |
Output is correct |
15 |
Correct |
3832 ms |
6356 KB |
Output is correct |
16 |
Correct |
304 ms |
10052 KB |
Output is correct |
17 |
Correct |
1248 ms |
5828 KB |
Output is correct |
18 |
Correct |
2212 ms |
10052 KB |
Output is correct |
19 |
Correct |
1884 ms |
10052 KB |
Output is correct |
20 |
Correct |
1764 ms |
10052 KB |
Output is correct |
21 |
Correct |
0 ms |
1208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1208 KB |
Output is correct |
2 |
Correct |
0 ms |
1208 KB |
Output is correct |
3 |
Correct |
0 ms |
1208 KB |
Output is correct |
4 |
Correct |
0 ms |
1208 KB |
Output is correct |
5 |
Correct |
0 ms |
1208 KB |
Output is correct |
6 |
Correct |
0 ms |
1208 KB |
Output is correct |
7 |
Correct |
0 ms |
1208 KB |
Output is correct |
8 |
Correct |
0 ms |
1208 KB |
Output is correct |
9 |
Correct |
0 ms |
1208 KB |
Output is correct |
10 |
Correct |
0 ms |
1208 KB |
Output is correct |
11 |
Correct |
0 ms |
1208 KB |
Output is correct |
12 |
Correct |
928 ms |
5168 KB |
Output is correct |
13 |
Correct |
660 ms |
5168 KB |
Output is correct |
14 |
Correct |
740 ms |
5168 KB |
Output is correct |
15 |
Correct |
864 ms |
5168 KB |
Output is correct |
16 |
Correct |
532 ms |
3056 KB |
Output is correct |
17 |
Correct |
856 ms |
5168 KB |
Output is correct |
18 |
Correct |
756 ms |
5168 KB |
Output is correct |
19 |
Correct |
1776 ms |
8336 KB |
Output is correct |
20 |
Correct |
3372 ms |
5036 KB |
Output is correct |
21 |
Correct |
368 ms |
1208 KB |
Output is correct |
22 |
Correct |
3828 ms |
6356 KB |
Output is correct |
23 |
Correct |
308 ms |
10052 KB |
Output is correct |
24 |
Correct |
1244 ms |
5828 KB |
Output is correct |
25 |
Correct |
2204 ms |
10052 KB |
Output is correct |
26 |
Correct |
1864 ms |
10052 KB |
Output is correct |
27 |
Correct |
1728 ms |
10052 KB |
Output is correct |
28 |
Correct |
716 ms |
35660 KB |
Output is correct |
29 |
Correct |
2660 ms |
35264 KB |
Output is correct |
30 |
Correct |
6232 ms |
29984 KB |
Output is correct |
31 |
Correct |
5476 ms |
22856 KB |
Output is correct |
32 |
Correct |
580 ms |
1340 KB |
Output is correct |
33 |
Correct |
776 ms |
2000 KB |
Output is correct |
34 |
Correct |
408 ms |
35264 KB |
Output is correct |
35 |
Correct |
1616 ms |
18104 KB |
Output is correct |
36 |
Correct |
3020 ms |
35264 KB |
Output is correct |
37 |
Correct |
2424 ms |
35264 KB |
Output is correct |
38 |
Correct |
2396 ms |
35264 KB |
Output is correct |
39 |
Correct |
2036 ms |
27212 KB |
Output is correct |
40 |
Correct |
0 ms |
1208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1208 KB |
Output is correct |
2 |
Correct |
0 ms |
1208 KB |
Output is correct |
3 |
Correct |
0 ms |
1208 KB |
Output is correct |
4 |
Correct |
0 ms |
1208 KB |
Output is correct |
5 |
Correct |
0 ms |
1208 KB |
Output is correct |
6 |
Correct |
0 ms |
1208 KB |
Output is correct |
7 |
Correct |
0 ms |
1208 KB |
Output is correct |
8 |
Correct |
0 ms |
1208 KB |
Output is correct |
9 |
Correct |
0 ms |
1208 KB |
Output is correct |
10 |
Correct |
0 ms |
1208 KB |
Output is correct |
11 |
Correct |
0 ms |
1208 KB |
Output is correct |
12 |
Correct |
924 ms |
5168 KB |
Output is correct |
13 |
Correct |
640 ms |
5168 KB |
Output is correct |
14 |
Correct |
752 ms |
5168 KB |
Output is correct |
15 |
Correct |
868 ms |
5168 KB |
Output is correct |
16 |
Correct |
528 ms |
3056 KB |
Output is correct |
17 |
Correct |
812 ms |
5168 KB |
Output is correct |
18 |
Correct |
768 ms |
5168 KB |
Output is correct |
19 |
Correct |
1704 ms |
8336 KB |
Output is correct |
20 |
Correct |
3324 ms |
5036 KB |
Output is correct |
21 |
Correct |
364 ms |
1208 KB |
Output is correct |
22 |
Correct |
3816 ms |
6356 KB |
Output is correct |
23 |
Correct |
300 ms |
10052 KB |
Output is correct |
24 |
Correct |
1216 ms |
5828 KB |
Output is correct |
25 |
Correct |
2132 ms |
10052 KB |
Output is correct |
26 |
Correct |
1864 ms |
10052 KB |
Output is correct |
27 |
Correct |
1704 ms |
10052 KB |
Output is correct |
28 |
Correct |
692 ms |
35660 KB |
Output is correct |
29 |
Correct |
2668 ms |
35264 KB |
Output is correct |
30 |
Correct |
6156 ms |
29984 KB |
Output is correct |
31 |
Correct |
5364 ms |
22856 KB |
Output is correct |
32 |
Correct |
580 ms |
1340 KB |
Output is correct |
33 |
Correct |
768 ms |
2000 KB |
Output is correct |
34 |
Correct |
424 ms |
35264 KB |
Output is correct |
35 |
Correct |
1664 ms |
18104 KB |
Output is correct |
36 |
Correct |
3100 ms |
35264 KB |
Output is correct |
37 |
Correct |
2468 ms |
35264 KB |
Output is correct |
38 |
Correct |
2476 ms |
35264 KB |
Output is correct |
39 |
Correct |
960 ms |
76316 KB |
Output is correct |
40 |
Correct |
4132 ms |
75260 KB |
Output is correct |
41 |
Correct |
8452 ms |
63116 KB |
Output is correct |
42 |
Correct |
7636 ms |
47804 KB |
Output is correct |
43 |
Correct |
808 ms |
75260 KB |
Output is correct |
44 |
Correct |
764 ms |
1472 KB |
Output is correct |
45 |
Correct |
2172 ms |
27212 KB |
Output is correct |
46 |
Correct |
4204 ms |
75392 KB |
Output is correct |
47 |
Correct |
4056 ms |
75392 KB |
Output is correct |
48 |
Correct |
3968 ms |
75260 KB |
Output is correct |
49 |
Correct |
0 ms |
1208 KB |
Output is correct |