Submission #857485

#TimeUsernameProblemLanguageResultExecution timeMemory
857485chilinhxyzabcCave (IOI13_cave)C++17
12 / 100
80 ms600 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std; 

void exploreCave(int n) {
    int s[n], d[n];
    for(int i = 0; i < n; i++) {
        s[i] = 1;
        d[i] = -1;
    }
    int curDoor = tryCombination(s);
    int idxTrue = 0;
    while(curDoor != -1) {
        int l = idxTrue, r = n - 1, res = n - 1;
        while(l <= r) {
            int m = (l + r) >> 1;
            s[m] = 1 - s[m];
            int door = tryCombination(s);
            if(door == curDoor) {
                r = m - 1;
            } else {
                res = m;
                l = m + 1;
            }
            s[m] = 1 - s[m];
        }
        d[res] = curDoor;
        s[res] = 1 - s[res];
        curDoor = tryCombination(s);
        idxTrue = res;
    }
    for(int i = 0; i < n; i++) {
        if(d[i] != -1)
            continue;
        s[i] = 1 - s[i];
        int door = tryCombination(s);
        d[i] = door;
        s[i] = 1 - s[i];
    }
    answer(s, d);
}
#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...