Submission #1078362

#TimeUsernameProblemLanguageResultExecution timeMemory
1078362allin27xRarest Insects (IOI22_insects)C++17
99.35 / 100
40 ms1096 KiB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
#define int long long

//void move_inside(int)
//void move_outside(int)
// int press_button()


signed min_cardinality(signed N){
    std::random_device rd;
    std::mt19937 g(rd());
    vector<int> in,out; int k;
    for (int i=0; i<N; i++) {
        move_inside(i);
        if (press_button() == 2) move_outside(i);
        else in.push_back(i);
    }
    k = in.size(); for (int x: in) move_outside(x);
    int ans = 0;
    vector<int> tot; for (int i=0; i<N; i++) tot.push_back(i);
    while (1) {
        int mx =  (int)tot.size()/k;
        if (!mx) return ans;
        int m = mx / 2+1;
        in.clear(); out.clear();
        shuffle(tot.begin(), tot.end(), g);

        for (int x: tot) {
            move_inside(x);
            if (in.size() == m*k || press_button() == m+1) move_outside(x), out.push_back(x);
            else in.push_back(x);
        }
        if (in.size() == m * k) {
            ans += m; tot = out;
        } else {
            tot = in;
        }
        for (int x: in) move_outside(x);
    }
}

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:32:27: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   32 |             if (in.size() == m*k || press_button() == m+1) move_outside(x), out.push_back(x);
      |                 ~~~~~~~~~~^~~~~~
insects.cpp:35:23: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   35 |         if (in.size() == m * k) {
      |             ~~~~~~~~~~^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...