제출 #109228

#제출 시각아이디문제언어결과실행 시간메모리
109228Nodir_Bobiev동굴 (IOI13_cave)C++14
0 / 100
581 ms464 KiB
# include "cave.h" # include <iostream> using namespace std; /* int n, s[5001], d[5001], counter; int tryCombination( int S[] ) { counter ++; for ( int i = 0; i < n; i ++ ){ if ( S[d[i]] != s[d[i]] ){ return i; } } return -1; } void answer( int S[], int D[] ) { bool T = true; for ( int i = 0; i < n; i ++ ) if( S[i] != s[i] || D[i] != d[i] ) T = false; if( T ){ cout << endl; cout << "WRONG ANSWER!"; cout << endl; } else{ cout << endl; cout << "ACCEPTED!"; cout << endl; } cout << "counter : " << counter << endl; return; } */ void exploreCave( int N ) { bool used[N] = {}; int S[N] = {}, D[N] = {}; for ( int i = 0; i < N; i ++ ){ for ( int j = 0; j < N; j ++ ){ if( used[j] ){ continue; } else{ S[j] = 0; } } int num = tryCombination( S ); int open = 0; if( num == i ) open = 1; int l = 0, r = N - 1; while( l < r ){ int m = ( l + r ) >> 1; for ( int j = 0; j < N; j ++ ){ if( used[j] ) continue; else{ if( j < l || m > j ) S[j] = open; else S[j] = 1 - open; } } num = tryCombination( S ); if( num == i ){ r = m; } else{ l = m + 1; } } used[l] = true; S[l] = open; D[i] = l; } answer( S, D ); } /* int main() { cin >> n; for ( int i = 0; i < n; i ++ ){ cin >> s[i]; } for ( int i = 0; i < n; i ++ ){ cin >> d[i]; } exploreCave( n ); cout << endl; cout << "THE END!" << endl; return 0; } */
#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...