#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;
}
}
d[l] = curDoor;
swch[curDoor] = l;
}
answer(s, d);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |