Submission #727779

#TimeUsernameProblemLanguageResultExecution timeMemory
727779vjudge1Rarest Insects (IOI22_insects)C++17
99.95 / 100
54 ms336 KiB
#include "insects.h"
#include<bits/stdc++.h>
#define eb emplace_back

int min_cardinality(int N) {
    std::vector<int>machine;
    std::vector<bool>inside(N,false),fixed(N,false);
    for(int i=0;i<N;++i){
        move_inside(i);
        if(press_button()==2){
            move_outside(i);
        }
        else{
            inside[i]=fixed[i]=true;
            machine.eb(i);
        }
    }
    int uni=machine.size();
    int l=1,r=N/uni;
    while(l<r){
        int mid=(l+r+1)>>1,k=0;
        for(int i=0;i<N;++i){
            if(fixed[i]) continue;
            if(uni*mid==machine.size()) break;
            move_inside(i);
            k++;
            if(press_button()>mid){
                move_outside(i);
                k--;
            }
            else{
                inside[i]=true;
                machine.eb(i);
            }
        }
        if(uni*mid==machine.size()){
            l=mid;
            for(int i=0;i<N;++i){
                if(inside[i]) fixed[i]=true;
            }
        }
        else{
            r=mid-1;
            for(int i=0;i<N;++i){
                if(!inside[i]){
                    fixed[i]=true;
                }
                else if(!fixed[i]){
                    move_outside(i);
                    inside[i]=false;
                    machine.pop_back();
                }
            }
        }
    }
    return l;
}

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:24:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |             if(uni*mid==machine.size()) break;
      |                ~~~~~~~^~~~~~~~~~~~~~~~
insects.cpp:36:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         if(uni*mid==machine.size()){
      |            ~~~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...