Submission #1226619

#TimeUsernameProblemLanguageResultExecution timeMemory
1226619hengliaoRarest Insects (IOI22_insects)C++20
99.78 / 100
15 ms436 KiB
#include "insects.h" #include<bits/stdc++.h> using namespace std; #define F first #define S second #define pb push_back #define vll vector<ll> #define pll pair<ll, ll> typedef int ll; int min_cardinality(int n) { vector<bool> done(n); ll siz=0; auto in=[&](ll tar){ move_inside(tar); done[tar]=1; siz++; }; auto out=[&](ll tar){ move_outside(tar); done[tar]=0; siz--; }; auto press=[&](){ return press_button(); }; for(ll i=0;i<n;i++){ in(i); if(press()>1){ out(i); } } ll ty=siz; if(ty==n) return 1; for(ll i=0;i<n;i++){ if(done[i]) out(i); } vll a(n); ll lef=2, rig=n/ty; ll good=-1; auto check=[&](ll tar){ vll v; for(ll i=0;i<n;i++){ if(a[i]>tar && done[i]){ v.pb(i); } else if(a[i]<=tar && !done[i]){ v.pb(i); } } for(auto &it:v){ if(done[it]) out(it); } for(auto &it:v){ in(it); a[it]=press(); if(a[it]>tar){ out(it); } } return siz>=tar*ty; }; while(lef<=rig){ ll mid=(lef+rig)/2; if(check(mid)){ good=mid; lef=mid+1; } else{ rig=mid-1; } } if(good==-1) return 1; return good; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...