제출 #485143

#제출 시각아이디문제언어결과실행 시간메모리
485143dekanycsabaCave (IOI13_cave)C++14
0 / 100
200 ms888 KiB
#include <bits/stdc++.h>
#include "cave.h"
#include<math.h>

void exploreCave(int N) {
   int D[N],S[N]={0};
   int AA[N]={0};
   int a=0,s1=0,s2=0;
   if(N==1)
   {
       s1=tryCombination(AA);
       if(s1>0 || s1==-1)
       {
           a=0;
       }
       else{
            a=1;
       }
       D[0]=0;
       S[0]=a;
       answer(S,D);
   }
   else{

    int k=0,kk=0;
    while(N>pow(2,k))
    {
        k++;
    }
    int nul[k][N]={};
    int egy[k][N]={};
    for(int i=0;i<k;i++)
    {
        for(int j=0;j<N;j++)
        {
             if((j>>(k))%2==0)
               {
                   nul[i][j]=0;
                   egy[i][j]=1;
               }
               else{
                    nul[i][j]=1;
                   egy[i][j]=0;
               }
        }
    }
   for(int i=0;i<N;i++)
   {
       D[i]=-1;
   }
   for(int i=0;i<N;i++)
   {
       s1=tryCombination(AA);
       if(s1>i || s1==-1)
       {
           a=0;
       }
       else{
            a=1;
       }
       kk=0;
       s2=0;
       while(N>pow(2,kk))
       {
           if(a==0)
           {
               s1=tryCombination(nul[kk]);
           }
           else{
            s1=tryCombination(egy[kk]);
           }

            if(s1>i || s1==-1)
            {
               }
            else{
              s2=s2+pow(2,kk);
                }
        kk++;
       }
       D[i]=s2;
       S[i]=a;
       for(int j=0;j<k;j++)
       {
           nul[j][s2]=a;
           egy[j][s2]=a;
       }
       AA[s2]=a;
   }
   answer(S,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...