제출 #412124

#제출 시각아이디문제언어결과실행 시간메모리
412124MDario동굴 (IOI13_cave)C++11
100 / 100
388 ms452 KiB
#include "cave.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define F first
#define S second
int a[5000], r[5000], n;
int f(int lf, int rf, int k){
    if(lf==rf)return lf;
    int m=(lf+rf)/2, c;
    for(int i=lf; i<=m; i++){
        if(r[i]==-1)a[i]=(!a[i]);
    }
    c=tryCombination(a);
    for(int i=lf; i<=m; i++){
        if(r[i]==-1)a[i]=(!a[i]);
    }
    if(c>k||c==-1)return f(lf, m, k);
    else return f(m+1, rf, k);
}
void exploreCave(int N) {
    n=N;
    set<int> v;
    int c;
    for(int i=0; i<N; i++){
        a[i]=0;
        r[i]=-1;
    }
    for(int i=0; i<N; i++){
        c=tryCombination(a);
        if(c>i||c==-1){
            for(int t=0; t<N; t++){
                if(r[t]==-1)a[t]=(!a[t]);
            }
        }
        c=f(0, n-1, i);
        r[c]=i;
        a[c]=(!a[c]);
        v.erase(c);
    }
    answer(a, r);
    return ;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…