# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
18963 |
2016-02-16T18:22:57 Z |
ggoh |
게임 (IOI13_game) |
C++ |
|
3947 ms |
256000 KB |
#include "game.h"
#include<algorithm>
#include<vector>
int a,b,X,t;
struct A{
int s,e,left,right,ynum;
long long val;
};
std::vector<A>xTree,yTree;
long long gcd2(long long xx,long long yy){
if(yy==0)return xx;
return gcd2(yy,xx%yy);
}
void yup(int num,int num1,int num2,int xco,int yco,long long v)
{
int s1=yTree[num].s,e1=yTree[num].e;
if(s1==e1){
if(num1==-1&&num2==-1)yTree[num].val=v;
else yTree[num].val=gcd2(num1==-1?0:yTree[num1].val,num2==-1?0:yTree[num2].val);
return ;
}
if((s1+e1)/2>=yco)
{
if(yTree[num].left==-1)
{
yTree[num].left=yTree.size();
yTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
}
if(num1>=0)num1=yTree[num1].left;
if(num2>=0)num2=yTree[num2].left;
yup(yTree[num].left,num1,num2,xco,yco,v);
}
else
{
if(yTree[num].right==-1)
{
yTree[num].right=yTree.size();
yTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
}
if(num1>=0)num1=yTree[num1].right;
if(num2>=0)num2=yTree[num2].right;
yup(yTree[num].right,num1,num2,xco,yco,v);
}
long long l=0,r=0;
if(yTree[num].left>=0)l=yTree[yTree[num].left].val;
if(yTree[num].right>=0)r=yTree[yTree[num].right].val;
yTree[num].val=gcd2(l,r);
}
void xup(int num,int xco,int yco,long long v)
{
if(xTree[num].ynum==-1)
{
xTree[num].ynum=yTree.size();
yTree.push_back({0,X,-1,-1,-1,0});
}
if(xTree[num].s==xTree[num].e)
{
yup(xTree[num].ynum,-1,-1,xco,yco,v);
return ;
}
int s1=xTree[num].s,e1=xTree[num].e;
if((s1+e1)/2>=xco)
{
if(xTree[num].left==-1)
{
xTree[num].left=xTree.size();
xTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
}
xup(xTree[num].left,xco,yco,v);
}
else
{
if(xTree[num].right==-1)
{
xTree[num].right=xTree.size();
xTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
}
xup(xTree[num].right,xco,yco,v);
}
yup(xTree[num].ynum,xTree[num].left==-1?-1:xTree[xTree[num].left].ynum,xTree[num].right==-1?-1:xTree[xTree[num].right].ynum,xco,yco,v);
}
long long yans(int num,int px,int qx,int py,int qy)
{
if(yTree[num].s>qy||yTree[num].e<py)return 0ll;
if(py<=yTree[num].s&&yTree[num].e<=qy)return yTree[num].val;
long long l=0,r=0;
if(yTree[num].left>=0)l=yans(yTree[num].left,px,qx,py,qy);
if(yTree[num].right>=0)r=yans(yTree[num].right,px,qx,py,qy);
return gcd2(l,r);
}
long long xans(int num,int px,int qx,int py,int qy)
{
if(xTree[num].s>qx||xTree[num].e<px)return 0ll;
if(px<=xTree[num].s&&xTree[num].e<=qx)
{
if(xTree[num].ynum>=0)return yans(xTree[num].ynum,px,qx,py,qy);
else return 0ll;
}
long long l=0,r=0;
if(xTree[num].left>=0)l=xans(xTree[num].left,px,qx,py,qy);
if(xTree[num].right>=0)r=xans(xTree[num].right,px,qx,py,qy);
return gcd2(l,r);
}
void init(int R, int C)
{
a=R;b=C;X=1e9;
xTree.push_back({0,X,-1,-1,0,0});
yTree.push_back({0,X,-1,-1,-1,0});
}
void update(int P, int Q, long long K)
{
xup(0,P,Q,K);
}
long long calculate (int P, int Q, int U, int V)
{
return xans(0,P,U,Q,V);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1212 KB |
Output is correct |
2 |
Correct |
3 ms |
1992 KB |
Output is correct |
3 |
Correct |
4 ms |
1996 KB |
Output is correct |
4 |
Correct |
0 ms |
1344 KB |
Output is correct |
5 |
Correct |
0 ms |
1212 KB |
Output is correct |
6 |
Correct |
3 ms |
1992 KB |
Output is correct |
7 |
Correct |
0 ms |
1344 KB |
Output is correct |
8 |
Correct |
0 ms |
1344 KB |
Output is correct |
9 |
Correct |
3 ms |
1996 KB |
Output is correct |
10 |
Correct |
0 ms |
1604 KB |
Output is correct |
11 |
Correct |
0 ms |
1604 KB |
Output is correct |
12 |
Correct |
0 ms |
1344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1212 KB |
Output is correct |
2 |
Correct |
0 ms |
1344 KB |
Output is correct |
3 |
Correct |
0 ms |
1344 KB |
Output is correct |
4 |
Correct |
1371 ms |
99528 KB |
Output is correct |
5 |
Correct |
1064 ms |
99528 KB |
Output is correct |
6 |
Correct |
1394 ms |
99528 KB |
Output is correct |
7 |
Correct |
1399 ms |
99524 KB |
Output is correct |
8 |
Correct |
981 ms |
50376 KB |
Output is correct |
9 |
Correct |
1398 ms |
99528 KB |
Output is correct |
10 |
Correct |
1293 ms |
99528 KB |
Output is correct |
11 |
Correct |
0 ms |
1344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1212 KB |
Output is correct |
2 |
Correct |
4 ms |
1992 KB |
Output is correct |
3 |
Correct |
4 ms |
1996 KB |
Output is correct |
4 |
Correct |
0 ms |
1344 KB |
Output is correct |
5 |
Correct |
0 ms |
1212 KB |
Output is correct |
6 |
Correct |
3 ms |
1992 KB |
Output is correct |
7 |
Correct |
0 ms |
1344 KB |
Output is correct |
8 |
Correct |
0 ms |
1344 KB |
Output is correct |
9 |
Correct |
0 ms |
1996 KB |
Output is correct |
10 |
Correct |
0 ms |
1604 KB |
Output is correct |
11 |
Correct |
0 ms |
1604 KB |
Output is correct |
12 |
Correct |
2252 ms |
25804 KB |
Output is correct |
13 |
Correct |
3512 ms |
13516 KB |
Output is correct |
14 |
Correct |
860 ms |
1996 KB |
Output is correct |
15 |
Correct |
3907 ms |
26052 KB |
Output is correct |
16 |
Correct |
898 ms |
50624 KB |
Output is correct |
17 |
Correct |
1990 ms |
26052 KB |
Output is correct |
18 |
Correct |
2871 ms |
50628 KB |
Output is correct |
19 |
Correct |
2623 ms |
50628 KB |
Output is correct |
20 |
Correct |
2529 ms |
50628 KB |
Output is correct |
21 |
Correct |
0 ms |
1344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
1212 KB |
Output is correct |
2 |
Correct |
3 ms |
1992 KB |
Output is correct |
3 |
Correct |
0 ms |
1996 KB |
Output is correct |
4 |
Correct |
0 ms |
1344 KB |
Output is correct |
5 |
Correct |
0 ms |
1212 KB |
Output is correct |
6 |
Correct |
0 ms |
1992 KB |
Output is correct |
7 |
Correct |
0 ms |
1344 KB |
Output is correct |
8 |
Correct |
0 ms |
1344 KB |
Output is correct |
9 |
Correct |
3 ms |
1996 KB |
Output is correct |
10 |
Correct |
0 ms |
1604 KB |
Output is correct |
11 |
Correct |
0 ms |
1604 KB |
Output is correct |
12 |
Correct |
1376 ms |
99528 KB |
Output is correct |
13 |
Correct |
1092 ms |
99528 KB |
Output is correct |
14 |
Correct |
1362 ms |
99528 KB |
Output is correct |
15 |
Correct |
1379 ms |
99524 KB |
Output is correct |
16 |
Correct |
944 ms |
50376 KB |
Output is correct |
17 |
Correct |
1394 ms |
99528 KB |
Output is correct |
18 |
Correct |
1298 ms |
99528 KB |
Output is correct |
19 |
Correct |
2239 ms |
25804 KB |
Output is correct |
20 |
Correct |
3448 ms |
13516 KB |
Output is correct |
21 |
Correct |
863 ms |
1996 KB |
Output is correct |
22 |
Correct |
3947 ms |
26052 KB |
Output is correct |
23 |
Correct |
908 ms |
50624 KB |
Output is correct |
24 |
Correct |
1968 ms |
26052 KB |
Output is correct |
25 |
Correct |
2884 ms |
50628 KB |
Output is correct |
26 |
Correct |
2631 ms |
50628 KB |
Output is correct |
27 |
Correct |
2446 ms |
50628 KB |
Output is correct |
28 |
Memory limit exceeded |
431 ms |
256000 KB |
Memory limit exceeded |
29 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1212 KB |
Output is correct |
2 |
Correct |
3 ms |
1992 KB |
Output is correct |
3 |
Correct |
4 ms |
1996 KB |
Output is correct |
4 |
Correct |
0 ms |
1344 KB |
Output is correct |
5 |
Correct |
0 ms |
1212 KB |
Output is correct |
6 |
Correct |
3 ms |
1992 KB |
Output is correct |
7 |
Correct |
0 ms |
1344 KB |
Output is correct |
8 |
Correct |
0 ms |
1344 KB |
Output is correct |
9 |
Correct |
3 ms |
1996 KB |
Output is correct |
10 |
Correct |
0 ms |
1604 KB |
Output is correct |
11 |
Correct |
0 ms |
1604 KB |
Output is correct |
12 |
Correct |
1435 ms |
99528 KB |
Output is correct |
13 |
Correct |
1067 ms |
99528 KB |
Output is correct |
14 |
Correct |
1392 ms |
99528 KB |
Output is correct |
15 |
Correct |
1442 ms |
99524 KB |
Output is correct |
16 |
Correct |
979 ms |
50376 KB |
Output is correct |
17 |
Correct |
1408 ms |
99528 KB |
Output is correct |
18 |
Correct |
1456 ms |
99528 KB |
Output is correct |
19 |
Correct |
2258 ms |
25804 KB |
Output is correct |
20 |
Correct |
3523 ms |
13516 KB |
Output is correct |
21 |
Correct |
843 ms |
1996 KB |
Output is correct |
22 |
Correct |
3941 ms |
26052 KB |
Output is correct |
23 |
Correct |
905 ms |
50624 KB |
Output is correct |
24 |
Correct |
2060 ms |
26052 KB |
Output is correct |
25 |
Correct |
3097 ms |
50628 KB |
Output is correct |
26 |
Correct |
2965 ms |
50628 KB |
Output is correct |
27 |
Incorrect |
2662 ms |
50628 KB |
Output isn't correct - wrong output format : File not found: "/var/www/temp/18963/outputCER5_1" |
28 |
Halted |
0 ms |
0 KB |
- |
29 |
Halted |
0 ms |
0 KB |
- |