제출 #991091

#제출 시각아이디문제언어결과실행 시간메모리
991091Muhammet동굴 (IOI13_cave)C++17
100 / 100
468 ms600 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

void exploreCave(int n) {
    int s[n], a[n], b[n], vis[n];
    for(int i = 0; i < n; i++) vis[i] = a[i] = b[i] = 0;
    for(int i = 0; i < n; i++){
        int l = 0, r = n-1, k = 0;
        int x = tryCombination(a);
        while(l <= r){
            int md = (l + r) / 2;
            for(int j = 0; j < n; j++){
                if(vis[j] == 0){
                    if(j >= l and j <= md) s[j] = 1;
                    else s[j] = 0;
                }
                else {
                    s[j] = a[j];
                }
            }
            int y = tryCombination(s);
            bool tr = 0;
            if(x == i){
                if(y != i){
                    tr = 1;
                }
            }
            else {
                if(y == i){
                    tr = 1;
                }
            }
            if(tr == 1){
                r = md-1;
                k = md;
            }
            else {
                l = md+1;
            }
        }
        vis[k] = 1;
        a[k] = (x == i);
        b[k] = i;
    }

    answer(a, b);

    return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...