Submission #870630

#TimeUsernameProblemLanguageResultExecution timeMemory
870630AtabayRajabliCave (IOI13_cave)C++17
12 / 100
334 ms540 KiB
#include "cave.h"
 
void exploreCave(int n) {
    int a[n], b[n], used[n], d[n];
    for(int i = 0; i<n; i++)
    {
        a[i] = 0;
        b[i] = 0;
        d[i] = 0;
        used[i] = 0;
    }
    
    int l, r, mid;
    for(int i = 0; i<n; i++)
    {
        l = 0, r = n-1;
        int q = tryCombination(a);
        if(q == -1)q = n;

        while(l < r)
        {
            mid = (l + r) / 2;

            for(int i = 0; i<n; i++)
            {
                if(used[i])continue;
                if(mid+1 <= i && i <= r)
                    b[i] = !a[i];
                else 
                    b[i] = a[i];
            }
            int k = tryCombination(b);
            if(k == -1)k = n;

            if((q == i && k > i) || (q > i && k == i))l = mid + 1;
            else r = mid;
        }       
        d[i] = l;
        if(q == i)a[l] = !a[l];
        b[l] = a[l];
        used[l] = 1;
    }
    
    answer(a, 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...