Submission #717299

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