Submission #108959

#TimeUsernameProblemLanguageResultExecution timeMemory
108959Nodir_BobievCave (IOI13_cave)C++14
0 / 100
7 ms384 KiB
# include "cave.h" # include <iostream> using namespace std; int n, a[5000], b[5000]; int A[5000], B[5000], counter; /* bool answer( int S[], int D[] ) { bool T = true; for ( int i = 0; i < n; i ++ ){ if( S[i] != a[i] ) T = false; } for ( int i = 0; i < n; i ++ ){ if( D[i] != b[i] ) T = false; } cout << ( T? "YES":"NO" ) << endl; cout << "counter :" << counter << endl; return T; } int tryCombination( int S[] ) { counter ++; for ( int i = 0; i < n; i ++ ){ if ( S[ b[i] ] != a[ b[i] ] ) return i; } return -1; } */ void exploreCave( int N ) { int S[5000] = {}; fill( B, B + n, 5000 ); for ( int i = 0; i < n; i ++ ){ for ( int j = 0; j < n; j ++ ) S[j] = 0; for ( int j = 0; j < i; j ++ ) S[ B[j] ] = A[ B[j] ]; int cs = tryCombination( S ); /* for ( int j = 0; j < n; j ++ ) cout << S[j] << ' '; cout << cs << endl; */ int open = 0; if( cs == i ) open = 1; int l = 0, r = n - 1; while( r > l ){ int m = ( l + r ) >> 1; for ( int j = 0; j < n; j ++ ) S[j] = open; for ( int j = l; j <= m; j ++ ) S[j] = 1 - open; for ( int j = 0; j < i; j ++ ) S[ B[j] ] = A[ B[j] ]; int cs = tryCombination( S ); if( cs == i ) r = m; else l = m + 1; } B[i] = l; A[ B[i] ] = open; //cout << i << ' ' << B[i] << ' ' << A[ B[i] ] << endl; } answer( A, B ); } /* int main() { cin >> n; for ( int i = 0; i < n; i ++ ) cin >> a[i]; for ( int i = 0; i < n; i ++ ) cin >> b[i]; exploreCave( n ); 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...