Submission #529576

#TimeUsernameProblemLanguageResultExecution timeMemory
529576physics07Cave (IOI13_cave)C++17
100 / 100
280 ms664 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
int ans[5000], match[5000];
void exploreCave(int n) {
    memset(match, -1, sizeof(match));
    for(int i=0; i<n; i++) {
        int s[5000]={0};
        for(int j=0; j<n; j++) if(match[j]!=-1) s[j]=ans[j];
        bool b=(tryCombination(s)==i);
        int l=0, r=n-1;
        while(l<r) {
            int mid=(l+r)/2;
            for(int j=l; j<=mid; j++) if(match[j]==-1) s[j]=!s[j];
            bool t=(tryCombination(s)==i);
            if(t==b) l=mid+1;
            else b=t, r=mid;
        }
        match[l]=i;
        ans[l]=s[l]^b;
    }
    answer(ans, match);
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...