Submission #1267637

#TimeUsernameProblemLanguageResultExecution timeMemory
1267637ti24dung_ntCave (IOI13_cave)C++20
100 / 100
319 ms528 KiB
#include "cave.h" void exploreCave(int n) { int s[n], d[n], swch[n], stateOpen[n]; for(int curDoor = 0; curDoor < n; ++curDoor) { for(int i = 0; i < n; ++i) s[i] = 0; for(int prevDoor = 0; prevDoor < curDoor; ++prevDoor) s[swch[prevDoor]] = stateOpen[prevDoor]; int losestDoor = tryCombination(s); if(losestDoor == curDoor) stateOpen[curDoor] = 1; else stateOpen[curDoor] = 0; int l = 0, r = n - 1; while(l < r) { int mid = (l + r) / 2; for(int i = 0; i < n; ++i) { if(i <= mid) s[i] = 0; else s[i] = 1; } for(int prevDoor = 0; prevDoor < curDoor; ++prevDoor) s[swch[prevDoor]] = stateOpen[prevDoor]; losestDoor = tryCombination(s); if(losestDoor == curDoor) { if(stateOpen[curDoor] == 0) l = mid + 1; else r = mid; } else { if(stateOpen[curDoor] == 0) r = mid; else l = mid + 1; } } d[l] = curDoor; swch[curDoor] = l; } for(int door = 0; door < n; ++door) s[swch[door]] = stateOpen[door]; 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...