Submission #467283

#TimeUsernameProblemLanguageResultExecution timeMemory
467283xt0r3Cave (IOI13_cave)C++14
100 / 100
265 ms548 KiB
#include "cave.h"
#include<bits/stdc++.h>
using namespace std;

int s[5005], d[5005], fix[5005];
void exploreCave(int N) {
    fill(fix, fix + 5005, -1);
    for(int i = 0; i < N; i++){
        int lo = 0, hi = N - 1;
        int was = tryCombination(s);
        while(lo < hi){
            int mid = (lo + hi) / 2;
            for(int j = lo; j <= mid; j++){
                if(fix[j] == -1){
                    s[j] ^= 1;
                }
            }
            int is = tryCombination(s);
            if((is == i) != (was == i)){
                hi = mid;
            }
            else{
                lo = mid + 1;
            }
            was = is;
        }
        d[lo] = i;
        fix[lo] = (s[lo] ^ ((int)(was == i)));
        s[lo] = fix[lo];
    }
    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...