제출 #893132

#제출 시각아이디문제언어결과실행 시간메모리
893132Trisanu_DasRarest Insects (IOI22_insects)C++17
90.13 / 100
48 ms1116 KiB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
 
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
int min_cardinality(int N) {
  vector <int> rest;
  auto attempt = [&](int x, int v) {
    move_inside(x);
    if (press_button() != v) rest.push_back(x), move_outside(x);
  };
  for (int i = 0; i < N; i++) attempt(i, 1);
  int ans = 1, cnt = N - (int)rest.size();
  for (; !rest.empty(); ans++) {
    vector <int> tmp = rest;
    rest.clear();
    shuffle(tmp.begin(), tmp.end(), rng);
    for (int i = 0; i < tmp.size(); i++)
      if (i < rest.size() + cnt) attempt(tmp[i], ans + 1);
      else rest.push_back(tmp[i]);
    if (tmp.size() < rest.size() + cnt) break;
  }
  return ans;
}

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

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:19:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for (int i = 0; i < tmp.size(); i++)
      |                     ~~^~~~~~~~~~~~
insects.cpp:20:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |       if (i < rest.size() + cnt) attempt(tmp[i], ans + 1);
      |           ~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...