Submission #1227780

#TimeUsernameProblemLanguageResultExecution timeMemory
1227780walizamanee자동 인형 (IOI18_doll)C++20
10 / 100
0 ms328 KiB
#include<bits/stdc++.h> #include "doll.h" using namespace std; int trie[400001][2] , boss[400001] , here , n , lol; deque<int> a; void gettrie( int me , int pw ) { int ekhane = 1; for( int z = 0; z < pw ; z++ ) { if( ((me) & ( 1 << z )) >= 1 ) { if( trie[ekhane][1] == 1e7 ) { trie[ekhane][1] = (here); boss[here] = ekhane; here++; } ekhane = trie[ekhane][1]; } else{ if( trie[ekhane][0] == 1e7 ) { trie[ekhane][0] = (here); boss[here] = ekhane; here++; } ekhane = trie[ekhane][0]; } } lol = boss[ekhane]; here--; if( trie[lol][0] == ekhane ) trie[lol][0] = (-1) * (a[me]); else trie[lol][1] = (-1) * (a[me]); } void create_circuit(int M, vector<int> A) { vector<int> c(M + 1); for( int z = 0; z <= M; z++ ) c[z] = -1; int two = 0; a.clear(); n = (int)A.size(); for( int z = 0; z < n; z++ ) { a.push_back(A[z]); } for( int z = 0; z <= 2 * n; z++ ) { trie[z][0] = 1e7; trie[z][1] = 1e7; } here = 2; c[0] = a[0]; a.pop_front(); a.push_back(0); while( (1 << two) < n ) two++; cerr << (1 << two) << " " << n << " lol" << "\n"; for( int z = 1; z < ((1 << two) - n); z++ ) a.push_front(-1); n = (int)a.size(); for( int z = 0; z < n; z++ ) { cerr << a[z] << " "; gettrie(z , two); } vector<int> x(here - 1), y(here - 1); cerr << here << " " << n << "\n"; for( int z = 1; z < here; z++ ) { // if( trie[z][0] < -1e8 ) { x[z - 1] = (trie[z][0] * (-1)); y[z - 1] = (trie[z][1] * (-1)); // } } answer(c, x, y); }
#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...