Submission #715876

#TimeUsernameProblemLanguageResultExecution timeMemory
715876ovidiush11Cave (IOI13_cave)C++14
100 / 100
208 ms560 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

void exploreCave(int N)
{
    int st[N]={0},direction[N]={0},pos[N]={0};
    int last;
    for(int i = 0;i < N-1;i++)
    {
        last = tryCombination(direction);
        if(last == -1)last = N;
        int left = 0,right = N-1;
        while(left != right)
        {
            int mid = (left + right) / 2;
            for(int j = left;j <= mid;j++)if(st[j] == 0)direction[j] = (direction[j] + 1) % 2;
            int x = tryCombination(direction);
            if(x == -1)x = N;
            if((x > i && last > i) || (x == i && last == i))left = mid+1;
            else right = mid;
            last = x;
        }
        if(last == i)direction[left] = (direction[left] + 1) % 2;
        st[left] = 1;
        pos[left] = i;
    }
    for(int i = 0;i < N;i++)
    {
        if(st[i] == 0)
        {
            pos[i] = N-1;
            last = tryCombination(direction);
            if(last == -1)answer(direction,pos);
            else {direction[i] = (direction[i] + 1) % 2;
            answer(direction,pos);}
            break;
        }
    }
    return ;
}
#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...