이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include "cave.h"
using namespace std;
const int MAXN = 5010;
void answer(int S[],int D[]);
int tryCombination(int S[]);
bool vis[MAXN];
int aux[MAXN];
int bb(int x,int y,int S[],int k,int p,int n){
int meio = (x + y) / 2;
if(x == y) return x;
for(int i = 0;i < n;i++){
if(i <= meio && vis[i] == false) aux[i] = (S[i] + 1) % 2;
else aux[i] = S[i];
}
int h = tryCombination(aux);
if(h == -1 || h > p) h = 1;
else h = 0;
if(h != k) return bb(x,meio,S,k,p,n);
return bb(meio + 1,y,S,k,p,n);
}
void exploreCave(int n){
int S[MAXN] , D[MAXN];
memset(S,0,sizeof S);
for(int i = 0;i < n;i++){
int h = tryCombination(S);
if(h == -1) h = 10000;
//cout << "/ " << h << endl;
int l;
if(h > i) l = 1;
else l = 0;
//cout << "l " << l << endl;
int t = bb(0,n - 1,S,l,i,n);
D[t] = i;
vis[t] = true;
if(l == 0) S[t] += 1 , S[t] %= 2;
}
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... |