Submission #1266334

#TimeUsernameProblemLanguageResultExecution timeMemory
1266334silentloopRarest Insects (IOI22_insects)C++20
0 / 100
3 ms412 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) int(x.size()) #define forn(i,n) for(i=0; i<n; i++) #define all(x) x.begin(),x.end() #define pb push_back #define mp make_pair #define fr first #define se second using namespace std; void move_inside(int i); void move_outside(int i); int press_button(); ll n, tam; const int MAXN=2001; bool ins[MAXN]; bool can(ll x) { ll i, cant=tam; vector<bool>ag(n); for(i=0; i<n; i++) { if(ins[i]) continue; move_inside(i); if(press_button()>x) move_outside(i); else { ag[i]=1; cant++; } } bool ans=0; if(cant==tam*x) { for(i=0; i<n; i++) ins[i]=ins[i]|ag[i]; return 1; } for(i=0; i<n; i++) { if(ag[i]) move_outside(i); } return 0; } int min_cardinality(int N) { ll i; n=N; vector<ll>v; move_inside(0); v.pb(0); ins[0]=1; for(i=1; i<n; i++) { move_inside(i); if(press_button()==1) { v.pb(i); ins[i]=1; } else move_outside(i); } tam=sz(v); ll l=2, r=n/tam, piv, pos=1; while(l<=r) { piv=(l+r)/2; if(can(piv)) { l=piv+1; pos=piv; } else r=piv-1; } return int(pos); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...