Submission #1217725

#TimeUsernameProblemLanguageResultExecution timeMemory
1217725mkkkkkkkkCave (IOI13_cave)C++20
0 / 100
103 ms528 KiB
#include <bits/stdc++.h>
#include "cave.h"

void exploreCave(int N) {
    int d[N]={},s[N]={};
    memset(s,-1,sizeof(s));
    memset(d,-1,sizeof(d));
    for(int i=0;i<N;i++)
    {
        int ss[N]={};
        for(int j=0;j<N;j++)
        {
            if(s[i]!=-1)
            ss[i]=s[i];
        }
        int br=tryCombination(ss);
        if(br==-1)
            br=N;
        if(br>i)
        {
            int l=0,r=N-1;
            int m=(l+r)/2;
            for(;l<=r;m=(l+r)/2)
            {
                memset(ss,0,sizeof(ss));

                for(int j=0;j<=m;j++)
                {
                    if(s[i]!=-1)
                    ss[i]=s[i];
                    else
                        ss[i]=1;
                }

                int brr=tryCombination(ss);
                if(brr==-1)
                    brr=N;

                    if(brr>i)
                    {
                        l=m+1;
                    }
                    else
                    {
                        r=m-1;
                    }

            }
            d[i]=l;
            s[l]=0;

        }
        else
        {
            int l=0,r=N-1;
            int m=(l+r)/2;
            for(;l<=r;m=(l+r)/2)
            {
                memset(ss,0,sizeof(ss));

                for(int j=0;j<=m;j++)
                {
                    if(s[i]!=-1)
                    ss[i]=s[i];
                    else
                        ss[i]=1;
                }

                int brr=tryCombination(ss);
                if(brr==-1)
                    brr=N;

                    if(brr>i)
                    {
                        r=m-1;
                    }
                    else
                    {
                        l=m+1;
                    }

            }

            d[i]=l;
            s[l]=1;
        }
    }
    int s1[N]={};
    for(int i=0;i<N;i++)
        s1[d[i]]=i;

    answer(s,s1);


}
#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...