# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
672604 | paulo_ar | 동굴 (IOI13_cave) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
int s [5004];
int res [5004];
bool activos [5004];
vector ans;
int busqueda (bool esuno, int inde, int n){
int izq=1, int der=n;
int mitad;
int master;
while(izq<=der){
mitad=(izq+der)/2;
if(esuno)master=0;
else master=1;
for(int i=1; i<=mitad; i++){
if(res[i]){
s[i]=res[i];
}
else{
s[i]=master;
}
}
if(esuno)master=1;
else master=0;
for(int i=mitad+1; i<=n; i++){
if(res[i]){
s[i]=res[i];
}
else{
s[i]=master;
}
}
if(tryCombination(s[])>=inde){
der=mitad-1;
}
else {
izq=mitad+1;
}
}
return mitad;
}
void exploreCave(int N) {
string s = "";
int ll;
for(int i=1; i<=n; i++){
res[i]=false;
}
for(int j=1; j<=n; j++){
for(int i=1; i<=n; i++){
if(res[i]){
s[i]=res[i];
}
else{
s[i]=master;
}
}
ll=tryCombination(s[]);
int des;
int a;
if(ll>=i){
des= busqueda(true,i,N):
a=1;
}
else {
des=busqueda(false,i,N);
a=0;
}
activos [des]=true;
res[der]=a;
ans.push_back(des);
}
answer(s[], ans[]);
// int tryCombination(int S[]);
//void answer(int S[], int D[]);
//void exploreCave(int N);
}