제출 #944685

#제출 시각아이디문제언어결과실행 시간메모리
944685nguyentunglamRarest Insects (IOI22_insects)C++17
0 / 100
40 ms672 KiB
#include "insects.h"
#include<bits/stdc++.h>
using namespace std;

const int NN = 1e5 + 10;

bool in[NN];

int min_cardinality(int n) {
  int type = 0;
  for(int i = 0; i < n; i++) {
    move_inside(i);
    if (press_button() == 1) {
      ++type;
      in[i] = 1;
    }
    else move_outside(i);
  }

  int l = 1, r = n / type, ans = 1;
  int cur = 1;

  while (l < r) {
    int mid = (l + r) / 2 + 1;
    assert(cur <= mid);
    vector<int> last_added;
    int last = cur;
    for(int i = 0; i < n; i++) if (!in[i]) {
      in[i] = 1;
      move_inside(i);
      int nxt = press_button();
      if (nxt > mid) {
        move_outside(i);
        in[i] = 0;
      }
      else {
        cur = nxt;
        last_added.push_back(i);
      }
    }
    int total = 0;
    for(int i = 0; i < n; i++) total += in[i];
    if (cur == mid && mid * type == total) {
      l = mid;
    }
    else {
      r = mid - 1;
      for(auto &j : last_added) move_outside(j);
      cur = last;
    }
  }
  return l;
}

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

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:20:28: warning: unused variable 'ans' [-Wunused-variable]
   20 |   int l = 1, r = n / type, ans = 1;
      |                            ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...