제출 #311795

#제출 시각아이디문제언어결과실행 시간메모리
311795saarang123동굴 (IOI13_cave)C++14
0 / 100
44 ms448 KiB
#include "cave.h" void exploreCave(int n) { int a[n], s[n], d[n]; for(int i = 0; i < n; i++) a[i] = 0, s[i] = 0, d[i] = -1; for(int i = 0; i < n; i++) { if(d[i] != -1) continue; a[i] ^= 1; int mn = 0, mx = n - 1, id = 0, k = 0; int x = tryCombination(a); if(x == -1) break; while(mn < mx) { int mid = (mn + mx) >> 1; //cout << "Binsearch: " << mn << " " << mid << " " << mx << endl; for(int j = mn; j <= mid; j++) if(d[j] == -1 && j != i) a[j] ^= 1; k = tryCombination(a); for(int j = mn; j <= mid; j++) if(d[j] == -1 && j != i) a[j] ^= 1; if(k < x) mx = mid; else mn = mid + 1; } id = mn; a[id] ^= 1; k = tryCombination(a); if(k == -1) d[id] = x; else d[id] = k, a[id] ^= 1; //cout << "Binsearch end: " << id << " k: " << k << " d[id]: " << d[id] << endl; cout << endl; } for(int i = 0; i < n; i++) s[i] = a[i]; //answer(s, d); for(int i = 0; i < n; i++) { if(d[i] != -1) continue; s[i] ^= 1; d[i] = tryCombination(s); s[i] ^= 1; } answer(s, 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...