Submission #333192

#TimeUsernameProblemLanguageResultExecution timeMemory
333192couplefireMechanical Doll (IOI18_doll)C++17
100 / 100
165 ms13212 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; #define INF 1000000009 void create_circuit(int m, vector<int> events) { events.push_back(0); int n = events.size(); int numLvl = ceil(log2(0.0+n)); int curNum = n; vector<vector<int>> num(numLvl); for(int i = numLvl-1; i>=0; i--){ num[i].resize(curNum = (curNum+1)/2); } int label = 1; vector<int> ch[2]; ch[0] = vector<int>(2*n, -INF); ch[1] = vector<int>(2*n, -INF); vector<int> state(2*n, 0); for(int i = 0; i<numLvl; i++){ for(int j = 0; j<num[i].size(); j++) num[i][j] = label++; } for(int i = 0; i<numLvl-1; i++){ int cur = 0; for(int j = 0; j<num[i].size(); j++){ if(cur >= num[i+1].size()-1){ ch[0][num[i][j]] = 1; ch[1][num[i][j]] = num[i+1][cur]; continue; } ch[0][num[i][j]] = num[i+1][cur++]; ch[1][num[i][j]] = num[i+1][cur++]; } } if(n%2 == 1){ ch[0][label-1] = 1; } for(int i = 0; i<n; i++){ int v = 1; while(ch[state[v]][v] != -INF){ int t = v; v = ch[state[v]][v]; state[t] = 1-state[t]; } ch[state[v]][v] = -events[i]; state[v] = 1-state[v]; } vector<int> C(m+1); for(int i = 0; i<=m; i++){ C[i] = -1; } vector<int> X, Y; for(int i = 1; i<label; i++){ X.push_back(-ch[0][i]); Y.push_back(-ch[1][i]); } answer(C, X, Y); }

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:21:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |         for(int j = 0; j<num[i].size(); j++) num[i][j] = label++;
      |                        ~^~~~~~~~~~~~~~
doll.cpp:25:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         for(int j = 0; j<num[i].size(); j++){
      |                        ~^~~~~~~~~~~~~~
doll.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |             if(cur >= num[i+1].size()-1){
      |                ~~~~^~~~~~~~~~~~~~~~~~~~
#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...