Submission #777488

#TimeUsernameProblemLanguageResultExecution timeMemory
777488alexander707070Rarest Insects (IOI22_insects)C++17
25 / 100
313 ms312 KiB
#include<bits/stdc++.h>
#include "insects.h"
#define MAXN 2007
using namespace std;

int n,last,cnt,ans;
vector<int> diff,same;
int type[MAXN];
bool used[MAXN];

int solve_small(){
    for(int i=1;i<n;i++){
        diff.clear();

        for(int i=0;i<n;i++){
            if(used[i])continue;

            move_inside(i);
            diff.push_back(i);

            if(press_button()>1){
                move_outside(i);
                diff.pop_back();
            }
        }

        if(last!=diff.size()){
            return i;
        }

        for(int i:diff){
            used[i]=true;
            move_outside(i);
        }
    }

    return n;
}

int solve_big(){

    cnt=ans=n;
    while(cnt>0){

        same.clear();
        for(int i=0;i<n;i++){
            if(used[i])continue;

            move_inside(i);
            same.push_back(i);
            if(press_button()!=same.size()){
                same.pop_back();
                move_outside(i);
            }
        }

        ans=min(ans,int(same.size()));

        for(int i:same){
            used[i]=true; cnt--;
            move_outside(i);
        }
    }

    return ans;
}

int min_cardinality(int N){
    n=N;
    last=-1;

    for(int i=0;i<n;i++){
        move_inside(i);
        diff.push_back(i);

        if(press_button()>1){
            move_outside(i);
            diff.pop_back();
        }
    }

    if(diff.size()>=sqrt(n)+1){
        last=diff.size();
        for(int i:diff){
            used[i]=true;
            move_outside(i);
        }
        return solve_small();
    }else{
        return solve_big();
    }

    return n;
}

Compilation message (stderr)

insects.cpp: In function 'int solve_small()':
insects.cpp:27:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |         if(last!=diff.size()){
      |            ~~~~^~~~~~~~~~~~~
insects.cpp: In function 'int solve_big()':
insects.cpp:51:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |             if(press_button()!=same.size()){
      |                ~~~~~~~~~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...