제출 #329369

#제출 시각아이디문제언어결과실행 시간메모리
329369radaiosm7동굴 (IOI13_cave)C++98
100 / 100
290 ms768 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

void exploreCave(int n) {
  int i, lo, hi, mid, j, rtr;
  int tr[n];
  int sw[n];
  int test[n];
  vector<int> avail;

  for (i=0; i < n; i++) {
      tr[i] = -1;
      avail.push_back(i);
  }

  for (i=0; i < n; i++) {
      for (j=0; j < n; j++) {
        test[j] = max(tr[j], 0);
      }

      if (tryCombination(test) == i) {
        rtr = 1;
      }

      else {
        rtr = 0;
      }

      lo = 0;
      hi = avail.size()-1;



      while (lo < hi) {
          mid = (lo+hi)/2;

          for (j=lo; j <= mid; j++) {
            test[avail[j]] = 1-rtr;
          }

        for (j=mid+1; j <= hi; j++) {
          test[avail[j]] = rtr;
        }

        if (tryCombination(test) == i) {
            hi = mid;
        }

        else {
          lo = mid+1;
        }
      }

      sw[avail[lo]] = i;
      tr[avail[lo]] = rtr;
      avail.erase(find(avail.begin(), avail.end(), avail[lo]));
  }

  answer(tr, sw);
}
#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...