제출 #836195

#제출 시각아이디문제언어결과실행 시간메모리
836195unnickMinerals (JOI19_minerals)C++14
80 / 100
26 ms2564 KiB
#include "minerals.h"

#include <vector>

using namespace std;

int baseline = 0;
bool cpair(int i) {
  int tmp = Query(i);
  bool tmp2 = tmp == baseline;
  baseline = tmp;
  return tmp2;
}
vector<int> fst;
vector<int> snd;

void search(bool filled, int l, int h, vector<int> v) {
  if (h-l == 1) {
    Answer(fst[l], v[0]);
    return;
  }
  int m = (l+h)/2;
  vector<int> lv;
  vector<int> hv;
  for (int i = l; i < m; i++) cpair(fst[i]);
  for (int i = 0; i < h-l; i++) {
    if (cpair(v[i]) != filled) {
      lv.push_back(v[i]);
    } else {
      hv.push_back(v[i]);
    }
  }
  search(!filled, l, m, lv);
  search(filled, m, h, hv);
}

void Solve(int N) {
  int prev = 0;
  for (int i = 1; i <= N*2; i++) {
    if (cpair(i)) fst.push_back(i);
  }
  for (int i = 1, j = 0; i <= N*2; i++) {
    if (j<N && i == fst[j]) {
      j++;
      continue;
    }
    snd.push_back(i);
  }

  search(true, 0, N, snd);
}

컴파일 시 표준 에러 (stderr) 메시지

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:38:7: warning: unused variable 'prev' [-Wunused-variable]
   38 |   int prev = 0;
      |       ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...