Submission #815046

#TimeUsernameProblemLanguageResultExecution timeMemory
815046JakobZorzRarest Insects (IOI22_insects)C++17
47.50 / 100
216 ms544 KiB
#include"insects.h"
#include<iostream>
#include<vector>
#include<set>
using namespace std;

set<int>inside;
int n,distinct;

int c_press_button(){
    return press_button();
}

void c_move_inside(int a){
    inside.insert(a);
    move_inside(a);
}

void c_move_outside(int a){
    inside.erase(a);
    move_outside(a);
}

bool check(int c){
    for(int i=0;i<n;i++){
        c_move_inside(i);
        if(c_press_button()>c)
            c_move_outside(i);
    }
    
    bool res=inside.size()==c*distinct;
    vector<int>inside_vec={inside.begin(),inside.end()};
    for(int i:inside_vec)
        c_move_outside(i);
    return res;
}

int get_distinct(){
    for(int i=0;i<n;i++){
        c_move_inside(i);
        if(c_press_button()>1)
            c_move_outside(i);
    }
    
    int res=inside.size();
    
    vector<int>inside_vec={inside.begin(),inside.end()};
    for(int i:inside_vec)
        c_move_outside(i);
    
    return res;
}

int min_cardinality(int N){
    n=N;
    distinct=get_distinct();
    //cout<<"distinct "<<distinct<<"\n";
    int l=0,r=n+1;
    while(l<r-1){
        int m=(l+r)/2;
        if(check(m))
            l=m;
        else
            r=m;
    }
    return l;
}

Compilation message (stderr)

insects.cpp: In function 'bool check(int)':
insects.cpp:31:27: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   31 |     bool res=inside.size()==c*distinct;
      |              ~~~~~~~~~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...