Submission #867737

#TimeUsernameProblemLanguageResultExecution timeMemory
867737Dec0DeddCave (IOI13_cave)C++14
51 / 100
261 ms600 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

void exploreCave(int n) {
    int ans[n]={}, d[n]={};
    memset(ans, -1, sizeof(ans));
    memset(d, -1, sizeof(d));

    for (int i=0; i<n; ++i) {
        int s[n+1]={};
        // check if i-th must be up

        for (int j=0; j<n; ++j) {
            if (ans[j] != -1) s[j]=d[j];
            else s[j]=0;
        }

        int k=0;
        if (tryCombination(s) > i || tryCombination(s) == -1) k=0;
        else k=1;

        int l=0, r=n-1, res=n-1;
        while (l <= r) {
            int m=(l+r)/2;

            int tp[n]={};
            for (int j=0; j<n; ++j) {
                if (ans[j] != -1) tp[j]=d[j];
                else {
                    if (j <= m) tp[j]=k;
                    else tp[j]=k^1;
                }
            }

            if (tryCombination(tp) > i || tryCombination(tp) == -1) r=m-1, res=m;
            else l=m+1;
        } ans[res]=i, d[res]=k;
    }

    answer(d, ans);
}
#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...