Submission #18954

#TimeUsernameProblemLanguageResultExecution timeMemory
18954ggohGame (IOI13_game)C++98
Compilation error
0 ms0 KiB
#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 xnum,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(yTree[num1].val,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); }

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;
      ^
game.cpp: In function ‘void yup(int, int, int, int, int, int, long long int)’:
game.cpp:27:29: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             yTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
                             ^
game.cpp:27:54: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             yTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
                                                      ^
game.cpp:31:48: error: too few arguments to function ‘void yup(int, int, int, int, int, int, long long int)’
         yup(yTree[num].left,num1,num2,xco,yco,v);
                                                ^
game.cpp:14:6: note: declared here
 void yup(int xnum,int num,int num1,int num2,int xco,int yco,long long v)
      ^
game.cpp:38:29: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             yTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
                             ^
game.cpp:38:56: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             yTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
                                                        ^
game.cpp:42:49: error: too few arguments to function ‘void yup(int, int, int, int, int, int, long long int)’
         yup(yTree[num].right,num1,num2,xco,yco,v);
                                                 ^
game.cpp:14:6: note: declared here
 void yup(int xnum,int num,int num1,int num2,int xco,int yco,long long v)
      ^
game.cpp: In function ‘void xup(int, int, int, long long int)’:
game.cpp:54:25: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
         yTree.push_back({0,X,-1,-1,-1,0});
                         ^
game.cpp:54:41: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
         yTree.push_back({0,X,-1,-1,-1,0});
                                         ^
game.cpp:58:44: error: too few arguments to function ‘void yup(int, int, int, int, int, int, long long int)’
         yup(xTree[num].ynum,-1,-1,xco,yco,v);
                                            ^
game.cpp:14:6: note: declared here
 void yup(int xnum,int num,int num1,int num2,int xco,int yco,long long v)
      ^
game.cpp:67:29: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             xTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
                             ^
game.cpp:67:54: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             xTree.push_back({s1,(s1+e1)/2,-1,-1,-1,0});
                                                      ^
game.cpp:76:29: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             xTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
                             ^
game.cpp:76:56: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             xTree.push_back({(s1+e1)/2+1,e1,-1,-1,-1,0});
                                                        ^
game.cpp:80:138: error: too few arguments to function ‘void yup(int, int, int, int, int, int, long long int)’
     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);
                                                                                                                                          ^
game.cpp:14:6: note: declared here
 void yup(int xnum,int num,int num1,int num2,int xco,int yco,long long v)
      ^
game.cpp: In function ‘void init(int, int)’:
game.cpp:107:21: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     xTree.push_back({0,X,-1,-1,0,0});
                     ^
game.cpp:107:36: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     xTree.push_back({0,X,-1,-1,0,0});
                                    ^
game.cpp:108:21: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     yTree.push_back({0,X,-1,-1,-1,0});
                     ^
game.cpp:108:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     yTree.push_back({0,X,-1,-1,-1,0});
                                     ^