제출 #923764

#제출 시각아이디문제언어결과실행 시간메모리
923764artixkrishna동굴 (IOI13_cave)C++14
100 / 100
201 ms852 KiB
    #include <bits/stdc++.h>
    #include "cave.h"
    #define ff first
    #define ss second
    #define pb push_back
    #define all(x) x.begin(),x.end()
    using namespace std;
     
    void exploreCave(int N) {
       int q[N],vis[N],s[N],d[N];
       for(int i=0;i<N;i++){
          q[i]=0;s[i]=0;
          vis[i]=0;d[i]=0;
       }
       for(int i=0;i<N;i++){
          int res1=tryCombination(q);
          if(res1==-1)res1=N;
          if(res1<=i){
             for(int j=0;j<N;j++){
                if(!vis[j]){
                   if(q[j]==1)q[j]=0;
                   else q[j]=1;
                }
             }
          }
          int l=0,r=N-1;
          while(l<r){
             int md=(l+r)/2;
             for(int j=l;j<=md;j++){
                if(!vis[j]){
                   if(q[j]==1)q[j]=0;
                   else q[j]=1;
                }
             }
             int res=tryCombination(q);
             if(res==-1)res=N;
             for(int j=l;j<=md;j++){
                if(!vis[j]){
                   if(q[j]==1)q[j]=0;
                   else q[j]=1;
                }
             }
             if(res>=i+1)l=md+1;
             else r=md;
          }
          vis[r]=1;
          s[r]=q[r];
          d[r]=i;
       }
       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...