제출 #1158147

#제출 시각아이디문제언어결과실행 시간메모리
1158147weakweakweak동굴 (IOI13_cave)C++20
100 / 100
402 ms556 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

int tmp[5100], isfixed[5100];
int ans[5100], whs[5100];

void exploreCave(int N) {
    for (int i = 0; i < N; i++) isfixed[i] = ans[i] = 0;
    for (int j = 0; j < N; j++) {
        int me = 0;
        for (int i = 0; i < N; i++) if (!isfixed[i]) tmp[i] = 1;
        int ret = tryCombination(tmp);
        if (ret == -1 or ret > j) me = 1;
        int l = 0, r = N-1;
        while (l < r) {
            int mid = (l+r) / 2;
            for (int i = 0; i < N; i++) {
                if (isfixed[i]) continue;
                tmp[i] = (i > mid) ^ me;
            }
            int ret = tryCombination(tmp);
            if (ret > j or ret == -1) r = mid;
            else l = mid+1;
        }
        ans[l] = me;
        whs[l] = j;
        isfixed[l] = 1;
        tmp[l] = me;
    }

    answer(ans, whs);
}
#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...