제출 #29808

#제출 시각아이디문제언어결과실행 시간메모리
29808osmanorhan동굴 (IOI13_cave)C++14
100 / 100
519 ms632 KiB
#include "cave.h" #include <bits/stdc++.h> #define ort (b+s)/2 using namespace std; const int maxn = 5020; bool used[maxn]; int ans[maxn], loc[maxn]; int ar[maxn]; void Fill( int b, int e, int t ) { for(int i=b;i<=e;i++) if( !used[i] ) ar[i] = t; } bool look( int b, int e ) { for(int i=b;i<=e;i++) if( !used[i] ) return 1; return 0; } int trycom( int ar[] ) { int t = tryCombination( ar ); if( t == -1 ) t = 1e9; return t; } int find( int n, int b, int s, int val ) { if( b == s ) return b; if( !look( b, ort ) ) return find( n, ort+1, s, val ); if( !look( ort+1, s ) ) return find( n, b, ort, val ); Fill( b, ort, val ); Fill( ort+1, s, !val ); if( trycom( ar ) > n ) return find( n, b, ort, val ); return find( n, ort+1, s, val ); } void exploreCave(int N) { for(int i=0;i<N;i++) { Fill( 0, N-1, 0 ); int val = 0; if( trycom( ar ) > i ) val = 0; else val = 1; int t = find( i, 0, N-1, val ); loc[t] = i; ar[t] = ans[i] = val; used[t] = 1; } answer( ar, loc ); }
#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...