제출 #1257392

#제출 시각아이디문제언어결과실행 시간메모리
1257392thewizardman동굴 (IOI13_cave)C++20
100 / 100
752 ms536 KiB
#include "cave.h"
#include <iostream>

int s[5000], a[5000], b[5000];

int max(int x, int y) {
  return x > y ? x : y;
}

void exploreCave(int n) {
  for (int i = 0; i < n; i++) a[i] = -1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) s[j] = max(0, a[j]);
    int skibidi = tryCombination(s);
    int gean = skibidi >= i+1 || skibidi == -1;
    
    int l = 0, r = n - 1, mid, ans;
    while (l <= r) {
      mid = (l + r) >> 1;
      for (int i = 0; i < n; i++) {
        if (a[i] != -1) s[i] = a[i];
        else s[i] = (i <= mid)^gean;
      }
      int t = tryCombination(s);
      if (t > i || t == -1) r = mid - 1, ans = mid;
      else l = mid + 1;
    }
    a[ans] = gean^1;
    b[ans] = i;
  }
  answer(a, b);
}
#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...