제출 #97986

#제출 시각아이디문제언어결과실행 시간메모리
97986AlexLuchianov동굴 (IOI13_cave)C++14
100 / 100
1045 ms504 KiB
#include <iostream>
#include "cave.h"

using namespace std;

/*
void answer(int S[], int D[], int n){
  for(int i = 0 ; i < n; i++)
    cout << S[i] << " ";
  cout << '\n';

  for(int i = 0 ; i < n; i++)
    cout << D[i] << " ";
}


int tryCombination(int S[], int n) {
  for(int i = 0; i < n; i++)
    cout << S[i] << " ";
  cout << '\n';
  int ans;
  cin >> ans;
  return ans;
}
//*/

void exploreCave(int n) {
  int door[n] = {0}, per[n] = {0}, seen[n] = {0};

  for(int i = 0; i < n; i++){
    int from = 0, to = n - 1;
    int val = tryCombination(door);
    if(i < val || val == -1)
      for(int j = 0; j < n; j++)
        if(seen[j] == 0)
          door[j] ^= 1;

    while(from < to){
      int mid = (from + to) / 2;
      for(int j = 0; j <= mid; j++)
        if(seen[j] == 0)
          door[j] ^= 1;
      int val = tryCombination(door);
      if(i < val || val == -1){
        to = mid;
      } else
        from = mid + 1;
      for(int j = 0; j <= mid; j++)
        if(seen[j] == 0)
          door[j] ^= 1;

    }
    door[from] ^= 1;
    per[from] = i;
    seen[from] = 1;
  }
  answer(door, per);
}
#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...