Submission #341319

#TimeUsernameProblemLanguageResultExecution timeMemory
341319blueMechanical Doll (IOI18_doll)C++11
Compilation error
0 ms0 KiB
#include "doll.h" #include <vector> #include <iostream> using namespace std; // void answer(vector<int> C, vector<int> X, vector<int> Y) // { // cout << C.size() << ' ' << X.size() << '\n'; // for(int i = 0; i < C.size(); i++) cout << C[i] << '\n'; // for(int i = 0; i < X.size(); i++) cout << X[i] << ' ' << Y[i] << '\n'; // } void create_circuit(int num_triggers, vector<int> trigger_seq) { vector<int> trigger_exit(num_triggers+1, -1); vector<int> switch_left_exit, switch_right_exit; trigger_exit[0] = trigger_seq[0]; if(trigger_seq.size() == 1) { trigger_exit = vector<int>(num_triggers+1, 0); answer(trigger_exit, switch_left_exit, switch_right_exit); return; } trigger_exit[ trigger_seq[0] ] = -1; //unnecessary int last_row_pow; for(last_row_pow = 1; 2*(last_row_pow << p) < trigger_seq.size(); last_row_pow++); //1<<p is the size of the last row of the binary tree //2*(1<<p) = 1<<(p+1) <= N < (1<<p+2) int last_row_size = (1 << last_row_pow); int tree_size = 2 * last_row_size - 1; switch_left_exit = vector<int>( tree_size , -1); //2*last_row_size because binary tree switch_right_exit = vector<int>( tree_sze - 1 , -1); for(int i = 1; i <= last_row_size; i++) { switch_left_exit[i -1] = -2*i; switch_right_exit[i -1] = -(2*i + 1); } // cout << "0 " << C[0] << '\n'; // for(int i = 1; i < (1 << (p+1)); i++) cout << i << ' ' << X[i-1] << ' ' << Y[i-1] << '\n'; for(int i = tree_size + 1; i <= tree_size + 2*last_row_size; i++) { // cout << "switch = " << i << '\n'; if(i - tree_size <= num_triggers) { if((i - tree_size) % 2 == 1) switch_left_exit[i/2 -1] = trigger_seq[i - tree_size]; else switch_right_exit[i/2 -1] = A[i - tree_size]; } else if(i == (tree_size + 2*last_row_size) { switch_right_exit[i/2 -1] = 0; } else { if((i - tree_size) % 2 == 1) switch_left_exit[i/2 - 1] = -1; else switch_right_exit[i/2 - 1] = -1; } } answer(trigger_exit, switch_left_exit, switch_right_exit); }

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:32:46: error: 'p' was not declared in this scope
   32 |     for(last_row_pow = 1; 2*(last_row_pow << p) < trigger_seq.size(); last_row_pow++); //1<<p is the size of the last row of the binary tree
      |                                              ^
doll.cpp:39:38: error: 'tree_sze' was not declared in this scope; did you mean 'tree_size'?
   39 |     switch_right_exit = vector<int>( tree_sze - 1 , -1);
      |                                      ^~~~~~~~
      |                                      tree_size
doll.cpp:56:46: error: 'A' was not declared in this scope
   56 |             else switch_right_exit[i/2 -1] = A[i - tree_size];
      |                                              ^
doll.cpp:58:51: error: expected ')' before '{' token
   58 |         else if(i == (tree_size + 2*last_row_size)
      |                ~                                  ^
      |                                                   )
   59 |         {
      |         ~                                          
doll.cpp:67:5: error: expected primary-expression before '}' token
   67 |     }
      |     ^