# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
988506 | cnn008 | Rarest Insects (IOI22_insects) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
#include "insects.h"
#ifdef N_N_C
#include "debug.h"
#else
#define cebug(...) "Arya"
#endif
#define ll long long
const int N=1e5+5;
const int mod=1e9+7;
int cad,vis[1005],type;
int min_cardinality(int n){
for(int i=0; i<n; i++){
move_inside(i);
if(press_button()>cad) cad++,vis[i]=1;
else move_outside(i);
}
for(int i=0; i<n; i++){
if(vis[i]){
vis[i]=0;
move_outside(i);
}
}
if(cad<=30){
for(int i=0; i<n; i++){
if(!vis[i]){
vis[i]=++type;
move_inside(i);
for(int j=i+1; j<n; j++){
move_inside(j);
int val=press_button();
if(val==2) vis[j]=type;
move_outside(j);
}
move_outside(i);
}
}
map <int,int> mp;
for(int i=0; i<n; i++) mp[vis[i]]++;
int ans=INT_MAX;
for(auto [x,y]:mp) ans=min(ans,y);
return ans;
}else{
int cnt=0;
for(int i=0; i<n; i++){
if(!vis[i]){
cnt++;
vis[i]=++type;
move_inside(i);
int sz=1;
for(int j=i+1; j<n; j++){
move_inside(j);
if(press_button()>sz){
sz++;
vis[j]=type;
}else move_outside(j);
}
if(press_button()<cad) return cnt-1;
move_outside(i);
for(int j=i+1; j<n; j++) if(vis[j]==type) move_outside(j);
}
}
}
return cnt;
}
/** /\_/\
* (= ._.)
* / >💖 \>💕
**/