이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
#include <cstring>
#include <vector>
#include <numeric>
#include <cassert>
void exploreCave(int N)
{
int S[N], D[N]; // vla legal ?
memset(S, 0, sizeof S);
std::vector<int> cand(N);
std::iota(cand.begin(), cand.end(), 0);
for(int i=0;i<N;++i)
{
int v = tryCombination(S);
assert(v == -1 || v >= i);
bool down = v==i;
int l=0, r=cand.size();
for(;r-l>1;)
{
int m=l+(r-l)/2;
for(int j=l;j<m;++j) S[cand[j]]^=1;
v = tryCombination(S);
if((v==i) == down)
l=m;
else
r=m;
for(int j=l;j<m;++j) S[cand[j]]^=1;
}
if(down)
S[l] ^= 1;
D[cand[l]]=i;
cand.erase(cand.begin()+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... |