Submission #93128

#TimeUsernameProblemLanguageResultExecution timeMemory
93128Bodo171Game (IOI13_game)C++14
37 / 100
908 ms12256 KiB
#include "game.h" #include <climits> #include <iostream> #include <algorithm> #include <map> #define mp make_pair using namespace std; struct aint { aint *ls,*rs,*nxt; long long val; aint() { ls=rs=nxt=0; val=0; } }*rad,*c[105]; static long long ans; static int Rowss,Columnss; static int X1,Y1,X2,Y2; long long gcd(long long X, long long Y) { long long tmp; if(!X) return Y; while (X != Y && Y != 0) { tmp = X; X = Y; Y = tmp % Y; } return X; } void init(int R, int C) { Rowss=R;Columnss=C; for(int i=1;i<=R;i++) c[i]=new aint; rad=new aint; } void updY(aint* &nod,int l,int r,int poz,long long value) { if(l==r) { nod->val=value; return; } int m=(l+r)/2; if(poz<=m) { if(!nod->ls) nod->ls=new aint; updY(nod->ls,l,m,poz,value); } else { if(!nod->rs) nod->rs=new aint; updY(nod->rs,m+1,r,poz,value); } nod->val=0; if(nod->ls) nod->val=gcd(nod->val,nod->ls->val); if(nod->rs) nod->val=gcd(nod->val,nod->rs->val); } void updX(aint* &nod,int l,int r,int poz,int y,long long value) { if(!nod->nxt) nod->nxt=new aint; updY(nod->nxt,1,Columnss,y,value); if(l==r) return; int m=(l+r)/2; if(poz<=m) { if(!nod->ls) nod->ls=new aint; updX(nod->ls,l,m,poz,y,value); } else { if(!nod->rs) nod->rs=new aint; updX(nod->rs,m+1,r,poz,y,value); } } void qrY(aint* &nod,int l,int r) { if(Y1<=l&&r<=Y2) { ans=1LL*gcd(ans,nod->val); return; } int m=(l+r)/2; if(Y1<=m&&nod->ls) qrY(nod->ls,l,m); if(m<Y2&&nod->rs) qrY(nod->rs,m+1,r); } void qrX(aint* &nod,int l,int r) { if(X1<=l&&r<=X2) { qrY(nod->nxt,1,Columnss); return; } int m=(l+r)/2; if(X1<=m&&nod->ls) qrX(nod->ls,l,m); if(m<X2&&nod->rs) qrX(nod->rs,m+1,r); } void update(int P, int Q, long long K) { P++,Q++; updY(c[P],1,Columnss,Q,K); } long long calculate(int P, int Q, int U, int V) { ans=0; P++,Q++,U++,V++; X1=P;Y1=Q;X2=U;Y2=V; for(int i=X1;i<=X2;i++) qrY(c[i],1,Columnss); return ans; }

Compilation message (stderr)

grader.c: In function 'int main()':
grader.c:18:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...