#include<bits/stdc++.h>
#include "game.h"
using namespace std;
vector<long long> tree;
long long my_gcd(long long a,long long b)
{
if(a==0||b==0)return a+b;
long long r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int r,c;
void init(int R, int C)
{
r=R;
c=C;
int u=1;
while(u<C)u=u*2;
u=u*2+5;
int v=1;
while(v<R)v=v*2;
v=v*2+5;
int prod=u*v;
for(int i=0;i<prod;i++)
{
tree.push_back(0);
}
}
void my_update(int node,int lx,int rx,int ly,int ry,int x,int y,long long val)
{
if(lx==rx&&ly==ry)
{
assert(lx==x&&ly==y);
tree[node]=val;
return;
}
if(rx-lx+1<=ry-ly+1)
{
int av=(ly+ry)/2;
if(y<=av)my_update(node*2,lx,rx,ly,av,x,y,val);
else my_update(node*2+1,lx,rx,av+1,ry,x,y,val);
}
else
{
int av=(lx+rx)/2;
if(x<=av)my_update(node*2,lx,av,ly,ry,x,y,val);
else my_update(node*2+1,av+1,rx,ly,ry,x,y,val);
}
tree[node]=my_gcd(tree[node*2],tree[node*2+1]);
}
void update(int P, int Q, long long K)
{
my_update(1,0,r-1,0,c-1,P,Q,K);
}
int lq_x,rq_x,lq_y,rq_y;
long long my_query(int node,int lx,int rx,int ly,int ry)
{
/*
cout<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl;
cout<<"query: "<<lq_x<<" "<<rq_x<<" "<<lq_y<<" "<<rq_y<<endl;
*/
if(tree[node]==0)return 0;
if(lq_x<=lx&&rx<=rq_x&&lq_y<=ly&&ry<=rq_y)return tree[node];
if(max(lq_x,lx)>min(rq_x,rx)||max(lq_y,ly)>min(rq_y,ry))
{
return 0;
}
long long ans=0;
if(rx-lx+1<=ry-ly+1)
{
int av=(ly+ry)/2;
ans=my_gcd(ans,my_query(node*2,lx,rx,ly,av));
ans=my_gcd(ans,my_query(node*2+1,lx,rx,av+1,ry));
}
else
{
int av=(lx+rx)/2;
ans=my_gcd(ans,my_query(node*2,lx,av,ly,ry));
ans=my_gcd(ans,my_query(node*2+1,av+1,rx,ly,ry));
}
return ans;
}
long long calculate(int P, int Q, int U, int V)
{
lq_x=P;
lq_y=Q;
rq_x=U;
rq_y=V;
long long ans=my_query(1,0,r-1,0,c-1);
/*
for(int i=P;i<=U;i++)
ans=my_gcd(ans,my_query(i,1,0,c-1,Q,V));
*/
return ans;
}
/*
int main()
{
init(2,3);
update(0,0,20);
update(0,2,15);
update(1,1,12);
cout<<calculate(0,0,0,2)<<endl;//5
cout<<calculate(0,0,1,1)<<endl;//4
update(0,1,6);
update(1,1,14);
cout<<calculate(0,0,0,2)<<endl;//1
cout<<calculate(0,0,1,1)<<endl;//2
}
*/
Compilation message
grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
int res;
^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
248 KB |
Output is correct |
2 |
Correct |
4 ms |
1528 KB |
Output is correct |
3 |
Correct |
5 ms |
1568 KB |
Output is correct |
4 |
Correct |
3 ms |
1568 KB |
Output is correct |
5 |
Correct |
4 ms |
1652 KB |
Output is correct |
6 |
Correct |
4 ms |
1728 KB |
Output is correct |
7 |
Correct |
3 ms |
1728 KB |
Output is correct |
8 |
Correct |
4 ms |
1728 KB |
Output is correct |
9 |
Correct |
4 ms |
1744 KB |
Output is correct |
10 |
Correct |
4 ms |
1752 KB |
Output is correct |
11 |
Correct |
5 ms |
1804 KB |
Output is correct |
12 |
Correct |
2 ms |
1804 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
1804 KB |
Output is correct |
2 |
Correct |
3 ms |
1804 KB |
Output is correct |
3 |
Correct |
3 ms |
1804 KB |
Output is correct |
4 |
Execution timed out |
13080 ms |
132116 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
132116 KB |
Output is correct |
2 |
Correct |
4 ms |
132116 KB |
Output is correct |
3 |
Correct |
3 ms |
132116 KB |
Output is correct |
4 |
Correct |
2 ms |
132116 KB |
Output is correct |
5 |
Correct |
4 ms |
132116 KB |
Output is correct |
6 |
Correct |
4 ms |
132116 KB |
Output is correct |
7 |
Correct |
4 ms |
132116 KB |
Output is correct |
8 |
Correct |
3 ms |
132116 KB |
Output is correct |
9 |
Correct |
5 ms |
132116 KB |
Output is correct |
10 |
Correct |
4 ms |
132116 KB |
Output is correct |
11 |
Correct |
5 ms |
132116 KB |
Output is correct |
12 |
Correct |
9334 ms |
132116 KB |
Output is correct |
13 |
Execution timed out |
13046 ms |
132116 KB |
Time limit exceeded |
14 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
132116 KB |
Output is correct |
2 |
Correct |
5 ms |
132116 KB |
Output is correct |
3 |
Correct |
4 ms |
132116 KB |
Output is correct |
4 |
Correct |
4 ms |
132116 KB |
Output is correct |
5 |
Correct |
4 ms |
132116 KB |
Output is correct |
6 |
Correct |
4 ms |
132116 KB |
Output is correct |
7 |
Correct |
3 ms |
132116 KB |
Output is correct |
8 |
Correct |
3 ms |
132116 KB |
Output is correct |
9 |
Correct |
4 ms |
132116 KB |
Output is correct |
10 |
Correct |
4 ms |
132116 KB |
Output is correct |
11 |
Correct |
4 ms |
132116 KB |
Output is correct |
12 |
Execution timed out |
13082 ms |
139232 KB |
Time limit exceeded |
13 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
139232 KB |
Output is correct |
2 |
Correct |
4 ms |
139232 KB |
Output is correct |
3 |
Correct |
5 ms |
139232 KB |
Output is correct |
4 |
Correct |
2 ms |
139232 KB |
Output is correct |
5 |
Correct |
6 ms |
139232 KB |
Output is correct |
6 |
Correct |
4 ms |
139232 KB |
Output is correct |
7 |
Correct |
2 ms |
139232 KB |
Output is correct |
8 |
Correct |
4 ms |
139232 KB |
Output is correct |
9 |
Correct |
4 ms |
139232 KB |
Output is correct |
10 |
Correct |
5 ms |
139232 KB |
Output is correct |
11 |
Correct |
3 ms |
139232 KB |
Output is correct |
12 |
Execution timed out |
13034 ms |
139232 KB |
Time limit exceeded |
13 |
Halted |
0 ms |
0 KB |
- |