Submission #587413

#TimeUsernameProblemLanguageResultExecution timeMemory
587413Bogosort게임 (IOI13_game)C++17
Compilation error
0 ms0 KiB
#include "game.h" #include <bits/stdc++.h> #define CNT (int)2e7 #define CNT2 (int)1e6 using namespace std; const size_t MEMSIZE = 1e9 / 4; // in bytes constexpr size_t MX_ALIGN = alignof(std::max_align_t); char __attribute__((aligned(MX_ALIGN))) memory[MEMSIZE]; size_t memorypos; void * operator new(size_t n){ if (memorypos + n >= MEMSIZE) { memorypos = MEMSIZE / 3; } char *ret = memory + memorypos; memorypos = size_t((memorypos+n+MX_ALIGN-1)&-MX_ALIGN); return (void*)ret; } void operator delete(void *){} void operator delete(void *, size_t){} long long gcd2(long long X, long long Y) { long long tmp; while (X != Y && Y != 0) { tmp = X; X = Y; Y = tmp % Y; } return X; } struct node{ int l = 0,r = 0; long long val = 0; }vector<node> nodes(1); int cnt = 1; struct SegTree{ int root = -1; void upd(int v,int tl,int tr,int pos,long long val){ if(tl == tr){ nodes[v].val = val; return; } int tm = (tl + tr)/2; if(pos <= tm){ if(nodes[v].l == 0) nodes.push_back(new node()); nodes[v].l = cnt++; upd(nodes[v].l,tl,tm,pos,val); } else{ if(nodes[v].r == 0) nodes.push_back(new node()); nodes[v].r = cnt++; upd(nodes[v].r,tm+1,tr,pos,val); } nodes[v].val = gcd2(nodes[nodes[v].l].val,nodes[nodes[v].r].val); } long long get(int v,int tl,int tr,int l,int r){ if(v == 0 || tr < l || r < tl) return 0; if(l <= tl && tr <= r){ return nodes[v].val; } int tm = (tl + tr)/2; return gcd2(get(nodes[v].l,tl,tm,l,r),get(nodes[v].r,tm+1,tr,l,r)); } void upd(int pos,long long val){ if(root == -1) root = cnt++; upd(root,1,1e9,pos,val); } long long get(int l,int r){ if(root == -1) return 0; return get(root,1,1e9,l,r); } }; map<int,int> mp; int cntmp = 1; SegTree numbers[22005]; struct node2{ int l = 0,r = 0; SegTree val; }vector<node2>nodes(1); int cnt2 = 1; struct SegTree2D{ int root = -1; void upd(int v,int tl,int tr,int x,int y,long long val){ nodes2[v].val.upd(y,numbers[mp[y]].get(tl,tr)); if(tl == tr){ return; } int tm = (tl + tr)/2; if(x <= tm){ if(nodes2[v].l == 0) nodes2.push_back(new node2()); nodes2[v].l = cnt2++; upd(nodes2[v].l,tl,tm,x,y,val); } else{ if(nodes2[v].r == 0) nodes2.push_back(new node2()); nodes2[v].r = cnt2++; upd(nodes2[v].r,tm+1,tr,x,y,val); } } long long get(int v,int tl,int tr,int l,int r,int l2,int r2){ if(v == 0 || tr < l || r < tl) return 0; if(l <= tl && tr <= r){ return nodes2[v].val.get(l2,r2); } int tm = (tl + tr)/2; return gcd2(get(nodes2[v].l,tl,tm,l,r,l2,r2),get(nodes2[v].r,tm+1,tr,l,r,l2,r2)); } void upd(int x,int y,long long val){ if(root == -1) root = cnt2++; upd(root,1,1e9,x,y,val); } long long get(int l,int r,int l2,int r2){ if(root == -1) root = cnt2++; return get(root,1,1e9,l,r,l2,r2); } }tree; void init(int R, int C) { //tree.init(R,C); } void update(int P, int Q, long long K) { P++,Q++; if(mp[Q] == 0){ mp[Q] = cntmp++; } numbers[mp[Q]].upd(P,K); tree.upd(P,Q,K); } long long calculate(int P, int Q, int U, int V) { P++,Q++,U++,V++; assert(cnt < CNT); assert(cnt2 < CNT2); return tree.get(P,U,Q,V); }

Compilation message (stderr)

game.cpp:35:15: error: invalid declarator before 'nodes'
   35 | }vector<node> nodes(1);
      |               ^~~~~
game.cpp: In member function 'void SegTree::upd(int, int, int, int, long long int)':
game.cpp:41:7: error: 'nodes' was not declared in this scope; did you mean 'node'?
   41 |       nodes[v].val = val;
      |       ^~~~~
      |       node
game.cpp:46:10: error: 'nodes' was not declared in this scope; did you mean 'node'?
   46 |       if(nodes[v].l == 0)
      |          ^~~~~
      |          node
game.cpp:46:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   46 |       if(nodes[v].l == 0)
      |       ^~
game.cpp:48:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   48 |         nodes[v].l = cnt++;
      |         ^~~~~
game.cpp:48:9: error: 'nodes' was not declared in this scope; did you mean 'node'?
   48 |         nodes[v].l = cnt++;
      |         ^~~~~
      |         node
game.cpp:52:10: error: 'nodes' was not declared in this scope; did you mean 'node'?
   52 |       if(nodes[v].r == 0)
      |          ^~~~~
      |          node
game.cpp:52:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   52 |       if(nodes[v].r == 0)
      |       ^~
game.cpp:54:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   54 |         nodes[v].r = cnt++;
      |         ^~~~~
game.cpp:54:9: error: 'nodes' was not declared in this scope; did you mean 'node'?
   54 |         nodes[v].r = cnt++;
      |         ^~~~~
      |         node
game.cpp:57:5: error: 'nodes' was not declared in this scope; did you mean 'node'?
   57 |     nodes[v].val = gcd2(nodes[nodes[v].l].val,nodes[nodes[v].r].val);
      |     ^~~~~
      |     node
game.cpp: In member function 'long long int SegTree::get(int, int, int, int, int)':
game.cpp:63:14: error: 'nodes' was not declared in this scope; did you mean 'node'?
   63 |       return nodes[v].val;
      |              ^~~~~
      |              node
game.cpp:66:21: error: 'nodes' was not declared in this scope; did you mean 'node'?
   66 |     return gcd2(get(nodes[v].l,tl,tm,l,r),get(nodes[v].r,tm+1,tr,l,r));
      |                     ^~~~~
      |                     node
game.cpp: At global scope:
game.cpp:85:15: error: invalid declarator before 'nodes'
   85 | }vector<node2>nodes(1);
      |               ^~~~~
game.cpp: In member function 'void SegTree2D::upd(int, int, int, int, int, long long int)':
game.cpp:90:5: error: 'nodes2' was not declared in this scope; did you mean 'node2'?
   90 |     nodes2[v].val.upd(y,numbers[mp[y]].get(tl,tr));
      |     ^~~~~~
      |     node2
game.cpp:96:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   96 |       if(nodes2[v].l == 0)
      |       ^~
game.cpp:98:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   98 |         nodes2[v].l = cnt2++;
      |         ^~~~~~
game.cpp:102:7: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
  102 |       if(nodes2[v].r == 0)
      |       ^~
game.cpp:104:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  104 |         nodes2[v].r = cnt2++;
      |         ^~~~~~
game.cpp: In member function 'long long int SegTree2D::get(int, int, int, int, int, int, int)':
game.cpp:112:14: error: 'nodes2' was not declared in this scope; did you mean 'node2'?
  112 |       return nodes2[v].val.get(l2,r2);
      |              ^~~~~~
      |              node2
game.cpp:115:21: error: 'nodes2' was not declared in this scope; did you mean 'node2'?
  115 |     return gcd2(get(nodes2[v].l,tl,tm,l,r,l2,r2),get(nodes2[v].r,tm+1,tr,l,r,l2,r2));
      |                     ^~~~~~
      |                     node2