Submission #1061467

#TimeUsernameProblemLanguageResultExecution timeMemory
1061467TlenekWodoruRarest Insects (IOI22_insects)C++17
99.89 / 100
54 ms852 KiB
#include<bits/stdc++.h>
#include "insects.h"
using namespace std;
bool zaj[2009];
int min_cardinality(int n)
{
    int r=0;
    vector<int>U;
    for(int i=0;i<n;i++)
    {
        move_inside(i);
        int u=press_button();
        if(u>1)
        {
            move_outside(i);
            U.push_back(i);
        }
        else
        {
            zaj[i]=1;
            r++;
        }
    }
    int w=1;
    if((int)U.size()==0){return w;}
    while(true)
    {
        if((int)U.size()<r){return w;}
        int d=(((int)U.size()/r+1)/2);
        /**cout<<"r="<<r<<" d="<<d<<" w="<<w<<endl;
        cout<<"U={";
        for(int u : U)
        {
            cout<<u<<",";
        }
        cout<<"}"<<endl;**/
        vector<int>A,B;
        for(int i=0;i<n;i++)
        {
            if(zaj[i]){continue;}
            move_inside(i);
            int u=press_button();
            if(u>w+d)
            {
                move_outside(i);
                B.push_back(i);
            }
            else
            {
                A.push_back(i);
            }
        }
        if((int)A.size()==d*r)
        {
            w+=d;
            for(int u : A)
            {
                zaj[u]=1;
            }
            U=B;
        }
        else
        {
            for(int u : A)
            {
                move_outside(u);
            }
            for(int u : B)
            {
                zaj[u]=1;
            }
            U=A;
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...