Submission #65013

#TimeUsernameProblemLanguageResultExecution timeMemory
65013theknife2001Cave (IOI13_cave)C++17
100 / 100
893 ms640 KiB

#include "cave.h"
#include <bits/stdc++.h>

using namespace std;
const int NN=5e3+55;
int a[NN];
int p[NN];
int d[NN];

void exploreCave(int n)
{
    memset(d,-1,sizeof d);
    memset(p, 0,sizeof p);
    for(int i=0;i<n;i++)
    {
        int x;
        for(int j=0;j<n;j++)
            a[j]=p[j];
        int q=tryCombination(a);
        if(q==-1)
            q=n;
        int l=0,r=n,mid;
//        cout<<q<<endl;
        while(l<r)
        {
            for(int j=0;j<n;j++)
                a[j]=p[j];
            mid=(l+r)/2;
            for(int j=0;j<mid;j++)
            {
                if(d[j]!=-1)
                    continue ;
                a[j]=1;
            }
            x=tryCombination(a);
            if(x==-1)
                x=n;
//            for(int j=0;j<n;j++)
//                cout<<a[j]<<' ';
//            cout<<endl;
//            cout<<mid<<' '<<x<<endl;
            if((q>i&&x==i)||(q==i&&x>i))
                r=mid;
            else
                l=mid+1;
        }
        if(q>i)
        {
            d[l-1]=i;
            p[l-1]=0;
        }
        else if(q==i)
        {
            d[l-1]=i;
            p[l-1]=1;
        }
//        for(int j=0;j<n;j++)
//            cout<<p[j]<<' ';
//        cout<<endl;
    }
    answer(p,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...