제출 #109232

#제출 시각아이디문제언어결과실행 시간메모리
109232Nodir_Bobiev동굴 (IOI13_cave)C++14
0 / 100
332 ms544 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[l] = vc[i] ) ] = 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...