Submission #95709

#TimeUsernameProblemLanguageResultExecution timeMemory
95709oolimryMechanical Doll (IOI18_doll)C++14
Compilation error
0 ms0 KiB
#include "doll.h" using namespace std; typedef pair<int,int> ii; set<int> sss; void create_circuit(int M, std::vector<int> A) { int n = A.size(); vector<int> C(M + 1); //C[0] = 1; //C[1] = -1; //C[2] = 1; //C[3] = 0; //C[4] = 0; int sw = -1; int xxx = 1; while(xxx < 1000000){ sss.insert(xxx); xxx *= 2; } vector<int> X, Y; // X.push_back(2); //Y.push_back(3); vector<int> target[M+1]; for(int i = 0;i < n-1;i++){ target[A[i]].push_back(A[i+1]); } target[A[n-1]].push_back(0); target[0].push_back(A[0]); map<int, ii> mm; for(int i = 0;i <= M;i++){ //printf("%d: ",i); if(target[i].size() == 0) C[i] = 0; else if(target[i].size() == 1) C[i] = target[i][0]; else{ int nn = *sss.lower_bound(target[i].size()); int tree[2 * nn]; tree[0] = 0; for(int j = nn;j < 2 * nn;j++){ int l = j; int v = 0; while(l > 1){ v *= 2; if(l % 2 == 1) v++; l /= 2; } tree[j] = v; } for(int j = 1;j < nn;j++){ tree[j] = sw; sw--; } for(int j = nn;j < 2 * nn;j++){ if(tree[j] < nn - target[i].size()) tree[j] = tree[1]; else tree[j] = target[i][tree[j] - (nn - target[i].size())]; } //for(int j = 0;j < 2 * nn;j++){ // printf("%d ",tree[j]); //} for(int j = 1;j < nn;j++){ mm[tree[j]] = ii(tree[j*2],tree[j*2+1]); } C[i] = tree[1]; } //printf("\n"); } for(map<int,ii>::iterator it = mm.begin();it != mm.end();it++){ X.push_back(it->second.first); Y.push_back(it->second.second); } reverse(X.begin(),X.end()); reverse(Y.begin(),Y.end()); /* for(int i = 0;i < C.size();i++){ printf("%d ",C[i]); } printf("\n"); for(int i = 0;i < X.size();i++){ printf("%d %d\n",X[i],Y[i]); } */ answer(C, X, Y); }

Compilation message (stderr)

doll.cpp:4:1: error: 'set' does not name a type
    4 | set<int> sss;
      | ^~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:16:5: error: 'sss' was not declared in this scope
   16 |     sss.insert(xxx);
      |     ^~~
doll.cpp:29:3: error: 'map' was not declared in this scope
   29 |   map<int, ii> mm;
      |   ^~~
doll.cpp:2:1: note: 'std::map' is defined in header '<map>'; did you forget to '#include <map>'?
    1 | #include "doll.h"
  +++ |+#include <map>
    2 | using namespace std;
doll.cpp:29:7: error: expected primary-expression before 'int'
   29 |   map<int, ii> mm;
      |       ^~~
doll.cpp:37:19: error: 'sss' was not declared in this scope
   37 |         int nn = *sss.lower_bound(target[i].size());
      |                   ^~~
doll.cpp:56:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |             if(tree[j] < nn - target[i].size()) tree[j] = tree[1];
      |                ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
doll.cpp:63:13: error: 'mm' was not declared in this scope
   63 |             mm[tree[j]] = ii(tree[j*2],tree[j*2+1]);
      |             ^~
doll.cpp:70:11: error: expected primary-expression before 'int'
   70 |   for(map<int,ii>::iterator it = mm.begin();it != mm.end();it++){
      |           ^~~
doll.cpp:70:45: error: 'it' was not declared in this scope; did you mean 'ii'?
   70 |   for(map<int,ii>::iterator it = mm.begin();it != mm.end();it++){
      |                                             ^~
      |                                             ii
doll.cpp:70:51: error: 'mm' was not declared in this scope
   70 |   for(map<int,ii>::iterator it = mm.begin();it != mm.end();it++){
      |                                                   ^~
doll.cpp:74:3: error: 'reverse' was not declared in this scope
   74 |   reverse(X.begin(),X.end());
      |   ^~~~~~~