제출 #108982

#제출 시각아이디문제언어결과실행 시간메모리
108982Nodir_BobievCave (IOI13_cave)C++14
12 / 100
669 ms520 KiB
# include "cave.h" # include <iostream> # include <vector> using namespace std; /* int n, a[5001], b[5001], counter; void answer( int S[], int D[] ) { for ( int i = 0; i < n; i ++ ) cout << S[i] << ' '; cout << endl; for ( int i = 0; i < n; i ++ ) cout << D[i] << ' '; cout << endl; cout << "counter : " << counter << endl; } int tryCombination( int S[] ) { counter ++; for ( int i = 0; i < n; i ++ ) cout << S[i] << ' '; int ans = -1; for ( int i = 0; i < n; i ++ ){ if ( S[ b[i] ] != a[ b[i] ] ){ ans = i; break; } } cout << ": " << ans << endl; return ans; } void exploreCave( int N ); 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; } /**/ void exploreCave( int N ) { int A[5001] = {}, B[5001] = {}; vector < int > vc; for ( int i = 0; i < N; i ++ ) vc.push_back(i); for ( int i = 0; i < N; i ++ ){ for ( auto c: vc ) A[c] = 0; int cs = tryCombination( A ); int open = (cs == i ), l = 0, r = vc.size() - 1; while( r > l ){ int m = ( l + r ) >> 1; for ( auto c: vc ) A[ c ] = open; for ( int j = l; j <= m; j ++ ) A[ vc[j] ] = 1 - open; int cs = tryCombination( A ); (cs == i ? (r = m) : (l = m + 1) ); } A[ ( B[i] = vc[l] ) ] = open; vc.erase( vc.begin() + l ); } answer( A, B ); }

컴파일 시 표준 에러 (stderr) 메시지

cave.cpp:54:1: warning: "/*" within comment [-Wcomment]
 /**/
#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...