Submission #860261

#TimeUsernameProblemLanguageResultExecution timeMemory
860261vjudge1Rarest Insects (IOI22_insects)C++17
60.03 / 100
112 ms1716 KiB
#include<bits/stdc++.h>
#include"insects.h"
using namespace std;
int min_cardinality(int N){
    vector<int> u;
    map<int, int> tipo;
    vector<int> v;
    for(int i=0; i<N; i++){
        move_inside(i);
        if(press_button()==1){
            u.push_back(i);
            tipo[i]=u.size()-1;
        }else{
            move_outside(i);
            v.push_back(i);
        }
    }
    for(int i: u) move_outside(i);
    int pot=1;
    int U = u.size();
    set<int> S;
    while(pot<=U){
        for(int i: u){
            if((tipo[i]&pot)!=0){
                if(S.find(i)==S.end())move_inside(i);
                S.insert(i);
            }else{
                if(S.find(i)!=S.end())move_outside(i);
                S.erase(i);
            }
        }
        for(int i:v){
            move_inside(i);
            if(press_button()!=1){
                tipo[i]+=pot;
            }
            move_outside(i);
        }
        pot*=2;
    }
    map<int, int> m;
    for(int i=0; i<N; i++) m[tipo[i]]++;
    int minimo = N;
    for(auto l: m){
        minimo=min(minimo, l.second);
    }
    return minimo;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...