Submission #1356036

#TimeUsernameProblemLanguageResultExecution timeMemory
1356036whally드문 곤충 (IOI22_insects)C++20
0 / 100
0 ms412 KiB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
int n,t;

int min_cardinality(int N)
{
  vector<int> col;
  n = N;
  for (int i = 0; i < n; i++){
    t++;
    move_inside(i);
    col.push_back(i);
    int res = press_button();
    if (res > 1){
      move_outside(i);
      col.pop_back();
      t--;
    }
  }

  for (int x : col) move_outside(x);

  /*for (int x : col) cout << x << " "; cout << "\n";
  cout << t << "\n";*/

  int ans = n;
  for (int i = 0; i < t; i++){
    move_inside(col[i]);
    vector<int> now;
    int cnt = 1;
    for (int j = 0; j < n; j++){
      if (j == col[i]) continue;
      cnt++;
      move_inside(j);
      now.push_back(j);
      int res = press_button();
      if (res == n/t) break;
      if (res == 1){
        cnt--;
        move_outside(j);
        now.pop_back();
      }
    }
    for (int x : now) move_outside(x);
    move_outside(col[i]);
    ans = min(ans, cnt);
    if (ans == 1) break;
  }

  /*int l = 1, r = n/t;
  while (l < r){
    int mid = (l+r)/2;
    int ch = 0;
    for (int i = 0; i < mid-1; i++){
      move_inside(i);
    }
    for (int i = mid; i < n; i++){
      move_inside(i);
      int res = press_button();
      if (res == mid){
        ch = 1;
        break;
      }
      move_outside(i-mid);
    }
    for (int i = n-mid; i < n; i++){
      move_outside(i);
    }
    if (ch) r = mid;
    else l = mid+1;
  }*/

  return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...