Submission #1156161

#TimeUsernameProblemLanguageResultExecution timeMemory
1156161hxano드문 곤충 (IOI22_insects)C++20
99.89 / 100
15 ms440 KiB
#include "insects.h" #include <bits/stdc++.h> #define ll int #define ii pair<ll,ll> #define fi first #define se second #define pb push_back #define eb emplace_back #define lwb lower_bound #define upb upper_bound #define ld double #define ins insert #define del erase #define ull unsigned long long using namespace std; const ll big=1e5+9; const ll inf=1e9; //const ll mod=1e9+7; const ll hug=3e6; //const ll hug=7; //struct tr{ll fi,se,th; tr(ll _fi=0, ll _se=0, ll _th=0){fi=_fi; se=_se; th=_th;}}; //struct qu{ll fi,se,th,fo; qu(ll _fi=0, ll _se=0, ll _th=0, ll _fo=0){fi=_fi; se=_se; th=_th; fo=_fo;}}; //ll mxz(ll &t, ll val){if (t<val){t=val; return 1;} return 0;} ll mnz(ll &t, ll val){if (t>val){t=val; return 1;} return 0;} //ll qpw(ll n, ll k, ll m=mod){ll p=1, t=n%m; while (k){if (k&1) p=p*t%m; t=t*t%m; k>>=1;} return p;} ll ran(){ ll s=0; for (ll i=0; i<5; ++i) s^=(1ll*rand())<<(i*14ll); return abs(s); } ll ran(ll l, ll r){ return ran()%(r-l+1)+l; } ll n; ll c=0; ll vis[big]; ll eli[big]; //void move_inside(ll i){ // cout<<"move_inside("<<i<<")"<<endl; // return; //} //void move_outside(ll i){ // cout<<"move_outside("<<i<<")"<<endl; // return; //} //ll press_button(){ // cout<<"press_button()"<<endl; // for (ll i=0; i<n; ++i) if (vis[i]) cout<<i<<" "; cout<<endl; // ll x; cin>>x; // return x; //} ll add(ll i){ assert(!vis[i]); move_inside(i); ++c; vis[i]=1; return i; } ll del(ll i){ assert(vis[i]); move_outside(i); --c; vis[i]=0; return i; } ll check(ll x){ for (ll i=0; i<n; ++i) if (eli[i] && vis[i]) del(i); for (ll i=0; i<n; ++i){ if (!eli[i]) continue; add(i); ll cur=(c==1? 1ll: press_button()); if (cur>x) del(i); } return c; } ll min_cardinality(ll _n){ n=_n; for (ll i=0; i<n; ++i) eli[i]=1; ll m=check(1); for (ll i=0; i<n; ++i) if (vis[i]) eli[i]=0; ll l=2, r=n/m; while (l<=r){ ll mid=(l+r)>>1; if (check(mid)==m*mid){ l=mid+1; for (ll i=0; i<n; ++i) if (vis[i]) eli[i]=0; } else { r=mid-1; for (ll i=0; i<n; ++i) if (!vis[i]) eli[i]=0; } } return l-1; } int mainn(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("INPUT.TXT","r",stdin); // freopen("OUTPUT.TXT","w",stdout); // ll tst=1; // cin>>tst; // for (; tst; --tst) solve(); ll n; cin>>n; cout<<min_cardinality(n); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...