Submission #293782

#TimeUsernameProblemLanguageResultExecution timeMemory
293782Atill83Mechanical Doll (IOI18_doll)C++14
37 / 100
164 ms24444 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; const int MAXN = (int)5e5 + 5; int cur = -1; vector<int> X, Y, C; vector<int> cl[MAXN]; int do_it(vector<int> & sm){ int ad = cur--; if(sm.size() == 1 || __builtin_popcount(sm.size()) != 1){ reverse(sm.begin(), sm.end()); while(sm.size() == 1 || __builtin_popcount(sm.size()) != 1){ sm.push_back(ad); } reverse(sm.begin(), sm.end()); } int deg = 0; for(int i = 1; i < sm.size(); i++){ deg += (sm[i] != sm[i - 1]); } if(!deg){ cur++; return sm[0]; } if(sm.size() == 2){ X[-ad - 1] = sm[0]; Y[-ad - 1] = sm[1]; return ad; } vector<int> ot1, ot2; for(int i = 0; i < sm.size(); i+=2) ot1.push_back(sm[i]); for(int i = 1; i < sm.size(); i+=2) ot2.push_back(sm[i]); int a = do_it(ot1), b = do_it(ot2); X[-ad - 1] = a; Y[-ad - 1] = b; return ad; } void create_circuit(int M, vector<int> A){ A.push_back(0); int N = A.size(); X.resize(MAXN, 0); Y.resize(MAXN, 0); C.resize(M + 1, 0); C[0] = do_it(A); for(int i = 1; i <= M; i++) C[i] = C[0]; X.resize(-cur - 1); Y.resize(-cur - 1); /*for(int i = 0; i < X.size(); i++){ cout<<X[i]<< }*/ answer(C, X, Y); }

Compilation message (stderr)

doll.cpp: In function 'int do_it(std::vector<int>&)':
doll.cpp:20:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     for(int i = 1; i < sm.size(); i++){
      |                    ~~^~~~~~~~~~~
doll.cpp:33:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(int i = 0; i < sm.size(); i+=2)
      |                    ~~^~~~~~~~~~~
doll.cpp:35:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |     for(int i = 1; i < sm.size(); i+=2)
      |                    ~~^~~~~~~~~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:46:9: warning: unused variable 'N' [-Wunused-variable]
   46 |     int N = A.size();
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...