Submission #717294

#TimeUsernameProblemLanguageResultExecution timeMemory
717294JuanCave (IOI13_cave)C++14
100 / 100
882 ms588 KiB
        #include<bits/stdc++.h>
        #include "cave.h"
        using namespace std;
         
         
        void exploreCave(int N){
          int S[N]={}, D[N]={};
          vector<int> unprocessed;
          for(int i = 0; i < N; i++) unprocessed.push_back(i);
          
          for(int i = 0; i < N; i++){
            for(int x : unprocessed) S[x] = 0;
            if(tryCombination(S)!=i){
              for(int x : unprocessed) S[x] = 1;
            }
         
            int l = 0, r = unprocessed.size()-1;
            while(l<=r){
              int m = (l+r)>>1;
              for(int j = 0; j <= m; j++) S[unprocessed[j]] ^= 1;
              int ret = tryCombination(S);
              if(ret==i) l = m+1;
              else r = m-1;
         
              for(int j = 0; j <= m; j++) S[unprocessed[j]] ^= 1;
            }
         
            int pos = unprocessed[l];
            S[pos] ^= 1;
            D[pos] = i;
            unprocessed.erase(unprocessed.begin()+l);
          }
         
          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...