Submission #909685

#TimeUsernameProblemLanguageResultExecution timeMemory
909685JakobZorzGame (IOI13_game)C++17
Compilation error
0 ms0 KiB
#include"game.h" #include<vector> #include<iostream> using namespace std; typedef long long ll; const int TREE_SIZE=1<<30; ll gcd2(ll X,ll Y){ ll tmp; while (X!=Y&&Y!=0){ tmp=X; X=Y; Y=tmp%Y; } return X; } // =============================================================== // =============================================================== // =============================================================== struct Tree1{ ll val; int ch1,ch2; Tree1():val(0),ch1(-1),ch2(-1){} }; int num1; int trees1[10000000]; ll tree1_get_val(int node){ if(node==-1) return 0; return trees1[node].val; } int tree1_set(int node,int rl,int rr,int x,ll v){ if(node==-1) node=num1++; if(rl==rr-1){ trees1[node].val=v; return node; } int mid=(rl+rr)/2; if(x<mid){ trees1[node].ch1=tree1_set(trees1[node].ch1,rl,mid,x,v); }else{ trees1[node].ch2=tree1_set(trees1[node].ch2,mid,rr,x,v); } trees1[node].val=gcd2(tree1_get_val(trees1[node].ch1),tree1_get_val(trees1[node].ch2)); return node; } ll tree1_get(int node,int rl,int rr,int x1,int x2){ if(node==-1) return 0; if(x2<=rl||rr<=x1) return 0; if(x1<=rl&&rr<=x2) return trees1[node].val; int mid=(rl+rr)/2; return gcd2(tree1_get(trees1[node].ch1,rl,mid,x1,x2),tree1_get(trees1[node].ch2,mid,rr,x1,x2)); } // =============================================================== // =============================================================== // =============================================================== struct Tree2{ int val; int ch1,ch2; Tree2():ch1(-1),ch2(-1),val(-1){} }; int num2; int trees2[10000000]; ll tree2_get_val(int node,int x1,int x2){ if(node==-1) return 0; return tree1_get(trees2[node].val,0,TREE_SIZE,x1,x2); } int tree2_set(int node,int rl,int rr,int x,int y,ll v){ if(node==-1) node=num2++; if(rl==rr-1){ trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,v); return node; } int mid=(rl+rr)/2; if(y<mid){ trees2[node].ch1=tree2_set(trees2[node].ch1,rl,mid,x,y,v); }else{ trees2[node].ch2=tree2_set(trees2[node].ch2,mid,rr,x,y,v); } ll val=gcd2(tree2_get_val(trees2[node].ch1,x,x+1),tree2_get_val(trees2[node].ch2,x,x+1)); trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,val); return node; } ll tree2_get(int node,int rl,int rr,int x1,int x2,int y1,int y2){ if(node==-1) return 0; if(y2<=rl||rr<=y1) return 0; if(y1<=rl&&rr<=y2) return tree1_get(trees2[node].val,0,TREE_SIZE,x1,x2); int mid=(rl+rr)/2; return gcd2(tree2_get(trees2[node].ch1,rl,mid,x1,x2,y1,y2),tree2_get(trees2[node].ch2,mid,rr,x1,x2,y1,y2)); } // =============================================================== // =============================================================== // =============================================================== void init(int h,int w){ trees2.push_back(Tree2()); } void update(int y,int x,ll v){ tree2_set(0,0,TREE_SIZE,x,y,v); } ll calculate(int y1,int x1,int y2,int x2){ return tree2_get(0,0,TREE_SIZE,x1,x2+1,y1,y2+1); }

Compilation message (stderr)

game.cpp: In function 'll tree1_get_val(int)':
game.cpp:35:25: error: request for member 'val' in 'trees1[node]', which is of non-class type 'int'
   35 |     return trees1[node].val;
      |                         ^~~
game.cpp: In function 'int tree1_set(int, int, int, int, ll)':
game.cpp:43:22: error: request for member 'val' in 'trees1[node]', which is of non-class type 'int'
   43 |         trees1[node].val=v;
      |                      ^~~
game.cpp:49:22: error: request for member 'ch1' in 'trees1[node]', which is of non-class type 'int'
   49 |         trees1[node].ch1=tree1_set(trees1[node].ch1,rl,mid,x,v);
      |                      ^~~
game.cpp:49:49: error: request for member 'ch1' in 'trees1[node]', which is of non-class type 'int'
   49 |         trees1[node].ch1=tree1_set(trees1[node].ch1,rl,mid,x,v);
      |                                                 ^~~
game.cpp:51:22: error: request for member 'ch2' in 'trees1[node]', which is of non-class type 'int'
   51 |         trees1[node].ch2=tree1_set(trees1[node].ch2,mid,rr,x,v);
      |                      ^~~
game.cpp:51:49: error: request for member 'ch2' in 'trees1[node]', which is of non-class type 'int'
   51 |         trees1[node].ch2=tree1_set(trees1[node].ch2,mid,rr,x,v);
      |                                                 ^~~
game.cpp:53:18: error: request for member 'val' in 'trees1[node]', which is of non-class type 'int'
   53 |     trees1[node].val=gcd2(tree1_get_val(trees1[node].ch1),tree1_get_val(trees1[node].ch2));
      |                  ^~~
game.cpp:53:54: error: request for member 'ch1' in 'trees1[node]', which is of non-class type 'int'
   53 |     trees1[node].val=gcd2(tree1_get_val(trees1[node].ch1),tree1_get_val(trees1[node].ch2));
      |                                                      ^~~
game.cpp:53:86: error: request for member 'ch2' in 'trees1[node]', which is of non-class type 'int'
   53 |     trees1[node].val=gcd2(tree1_get_val(trees1[node].ch1),tree1_get_val(trees1[node].ch2));
      |                                                                                      ^~~
game.cpp: In function 'll tree1_get(int, int, int, int, int)':
game.cpp:63:29: error: request for member 'val' in 'trees1[node]', which is of non-class type 'int'
   63 |         return trees1[node].val;
      |                             ^~~
game.cpp:65:40: error: request for member 'ch1' in 'trees1[node]', which is of non-class type 'int'
   65 |     return gcd2(tree1_get(trees1[node].ch1,rl,mid,x1,x2),tree1_get(trees1[node].ch2,mid,rr,x1,x2));
      |                                        ^~~
game.cpp:65:81: error: request for member 'ch2' in 'trees1[node]', which is of non-class type 'int'
   65 |     return gcd2(tree1_get(trees1[node].ch1,rl,mid,x1,x2),tree1_get(trees1[node].ch2,mid,rr,x1,x2));
      |                                                                                 ^~~
game.cpp: In constructor 'Tree2::Tree2()':
game.cpp:74:13: warning: 'Tree2::ch2' will be initialized after [-Wreorder]
   74 |     int ch1,ch2;
      |             ^~~
game.cpp:73:9: warning:   'int Tree2::val' [-Wreorder]
   73 |     int val;
      |         ^~~
game.cpp:75:5: warning:   when initialized here [-Wreorder]
   75 |     Tree2():ch1(-1),ch2(-1),val(-1){}
      |     ^~~~~
game.cpp: In function 'll tree2_get_val(int, int, int)':
game.cpp:84:35: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
   84 |     return tree1_get(trees2[node].val,0,TREE_SIZE,x1,x2);
      |                                   ^~~
game.cpp: In function 'int tree2_set(int, int, int, int, int, ll)':
game.cpp:92:22: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
   92 |         trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,v);
      |                      ^~~
game.cpp:92:49: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
   92 |         trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,v);
      |                                                 ^~~
game.cpp:98:22: error: request for member 'ch1' in 'trees2[node]', which is of non-class type 'int'
   98 |         trees2[node].ch1=tree2_set(trees2[node].ch1,rl,mid,x,y,v);
      |                      ^~~
game.cpp:98:49: error: request for member 'ch1' in 'trees2[node]', which is of non-class type 'int'
   98 |         trees2[node].ch1=tree2_set(trees2[node].ch1,rl,mid,x,y,v);
      |                                                 ^~~
game.cpp:100:22: error: request for member 'ch2' in 'trees2[node]', which is of non-class type 'int'
  100 |         trees2[node].ch2=tree2_set(trees2[node].ch2,mid,rr,x,y,v);
      |                      ^~~
game.cpp:100:49: error: request for member 'ch2' in 'trees2[node]', which is of non-class type 'int'
  100 |         trees2[node].ch2=tree2_set(trees2[node].ch2,mid,rr,x,y,v);
      |                                                 ^~~
game.cpp:102:44: error: request for member 'ch1' in 'trees2[node]', which is of non-class type 'int'
  102 |     ll val=gcd2(tree2_get_val(trees2[node].ch1,x,x+1),tree2_get_val(trees2[node].ch2,x,x+1));
      |                                            ^~~
game.cpp:102:82: error: request for member 'ch2' in 'trees2[node]', which is of non-class type 'int'
  102 |     ll val=gcd2(tree2_get_val(trees2[node].ch1,x,x+1),tree2_get_val(trees2[node].ch2,x,x+1));
      |                                                                                  ^~~
game.cpp:103:18: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
  103 |     trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,val);
      |                  ^~~
game.cpp:103:45: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
  103 |     trees2[node].val=tree1_set(trees2[node].val,0,TREE_SIZE,x,val);
      |                                             ^~~
game.cpp: In function 'll tree2_get(int, int, int, int, int, int, int)':
game.cpp:113:39: error: request for member 'val' in 'trees2[node]', which is of non-class type 'int'
  113 |         return tree1_get(trees2[node].val,0,TREE_SIZE,x1,x2);
      |                                       ^~~
game.cpp:115:40: error: request for member 'ch1' in 'trees2[node]', which is of non-class type 'int'
  115 |     return gcd2(tree2_get(trees2[node].ch1,rl,mid,x1,x2,y1,y2),tree2_get(trees2[node].ch2,mid,rr,x1,x2,y1,y2));
      |                                        ^~~
game.cpp:115:87: error: request for member 'ch2' in 'trees2[node]', which is of non-class type 'int'
  115 |     return gcd2(tree2_get(trees2[node].ch1,rl,mid,x1,x2,y1,y2),tree2_get(trees2[node].ch2,mid,rr,x1,x2,y1,y2));
      |                                                                                       ^~~
game.cpp: In function 'void init(int, int)':
game.cpp:123:12: error: request for member 'push_back' in 'trees2', which is of non-class type 'int [10000000]'
  123 |     trees2.push_back(Tree2());
      |            ^~~~~~~~~