# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
18953 |
2016-02-16T17:53:45 Z |
ggoh |
게임 (IOI13_game) |
C++ |
|
4 ms |
132156 KB |
#include "game.h"
#include<algorithm>
#include<vector>
int a,b,X,t;
long long seg[4096][4096];
long long gcd2(long long xx,long long yy){
if(yy==0)return xx;
return gcd2(yy,xx%yy);
}
long long yans(int xnum,int num,int s,int e,int px,int qx,int py,int qy)
{
if(s>qy||py>e)return (long long)0;
if(py<=s&&e<=qy)return seg[xnum][num];
return gcd2(yans(xnum,num*2,s,(s+e)/2,px,qx,py,qy),yans(xnum,num*2+1,(s+e)/2+1,e,px,qx,py,qy));
}
long long xans(int num,int s,int e,int px,int qx,int py,int qy)
{
if(s>qx||px>e)return (long long)0;
if(px<=s&&e<=qx)return yans(num,1,0,X-1,px,qx,py,qy);
return gcd2(xans(num*2,s,(s+e)/2,px,qx,py,qy),xans(num*2+1,(s+e)/2+1,e,px,qx,py,qy));
}
void init(int R, int C)
{
X=2048;
}
void update(int P, int Q, long long K)
{
int u=X+P,o;
while(u)
{
o=X+Q;
seg[u][o]=K;o/=2;
while(o)
{
seg[u][o]=gcd2(seg[u][o*2],seg[u][o*2+1]);
o/=2;
}
u/=2;
}
}
long long calculate (int P, int Q, int U, int V)
{
return xans(1,0,X-1,P,U,Q,V);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
132156 KB |
Output is correct |
2 |
Incorrect |
4 ms |
132156 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
132156 KB |
Output is correct |
2 |
Incorrect |
0 ms |
132156 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
132156 KB |
Output is correct |
2 |
Incorrect |
0 ms |
132156 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
132156 KB |
Output is correct |
2 |
Incorrect |
0 ms |
132156 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
132156 KB |
Output is correct |
2 |
Incorrect |
0 ms |
132156 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |