Submission #749292

#TimeUsernameProblemLanguageResultExecution timeMemory
749292ZeroCoolCave (IOI13_cave)C++14
100 / 100
250 ms468 KiB
#include "cave.h"
#include <bits/stdc++.h>
#define ll long long

const int mxn = 5005;

using namespace std;

int S[mxn];
bool vis[mxn];
int D[mxn];

int n;

void flip(int s,int e){
    for(int i = s;i<=e;i++){
        if(!vis[i])S[i] ^= 1;
    }
}

int find(int pos){
    int s= 0;
    int e = n-1;
    if(tryCombination(S) != pos)flip(s,e);
    while(s != e){
        int m = (s+e)/2;
        flip(s,m);
        int t = tryCombination(S);
        
        flip(s,m);
        if(pos != t) e= m;
        else s = m+1;
    }
    return s;
}



void exploreCave(int N) {
    n = N;
    for(int i = 0;i<n;i++){
        int p = find(i);
        D[p] = i;
        vis[p] = true;
        S[p] ^= 1;
    }
    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...