Submission #305890

#TimeUsernameProblemLanguageResultExecution timeMemory
305890juggernautCave (IOI13_cave)C++14
100 / 100
278 ms636 KiB
#include"cave.h"
#include<bits/stdc++.h>
using namespace std;
int pos[5005],n,bl[5005],ans[5005],pr,cur;
bool check(int val,int l,int r){
    for(int i=l;i<=r;i++)if(!bl[i])ans[i]^=1;
    pr=cur;
    cur=tryCombination(ans);
    if(cur==-1)cur=n;
    return (pr==val)^(cur==val);
}
void exploreCave(int N){
    int i=0,l,r,m;
    n=N;
    for(;i<n;i++){
        l=0,r=n-1;
        cur=tryCombination(ans);
        if(cur==-1)cur=n;
        while(l<r){
            m=(l+r)>>1;
            if(check(i,l,m))r=m;
            else l=m+1;
        }
        if(cur==i)ans[l]^=1;
        pos[l]=i;
        bl[l]=1;
    }
    answer(ans,pos);
}
#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...