제출 #1035423

#제출 시각아이디문제언어결과실행 시간메모리
1035423vanea동굴 (IOI13_cave)C++14
100 / 100
216 ms600 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; using ll = long long; const int mxN = 5e3+10; bool vis[mxN]; bool check(int l, int r, int elem, int n, int arr[], int i) { for(int j = l; j <= r; j++) { if(vis[j]) continue; arr[j] = 1-elem; } int k = tryCombination(arr); for(int j = l; j <= r; j++) { if(vis[j]) continue; arr[j] = elem; } return ((k == -1) || (k > i)); } void exploreCave(int n) { int ans[n], d[n]; for(int i = 0; i < n; i++) { int elem; int curr[n]; memset(curr, 0, sizeof curr); for(int j = 0; j < n; j++) { if(vis[j]) curr[j] = ans[j]; } int k = tryCombination(curr); if(k > i || k == -1) elem = 1; else elem = 0; for(int j = 0; j < n; j++) { if(vis[j]) curr[j] = ans[j]; else curr[j] = elem; } int l = 0, r = n-1; while(l < r) { int mid = (l+r+1)/2; if(check(mid, r, elem, n, curr, i)) { l = mid; } else r = mid-1; } d[l] = i; ans[l] = (1-elem); vis[l] = true; } answer(ans, d); }
#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...