Submission #819385

#TimeUsernameProblemLanguageResultExecution timeMemory
819385andrei_boacaRarest Insects (IOI22_insects)C++17
96.28 / 100
65 ms424 KiB
#include "insects.h" #include <bits/stdc++.h> //#include "stub.cpp" using namespace std; int cul[2005]; int n; vector<int> spec; struct date { int nod,l,r; }; vector<date> need; bool comp(date a, date b) { return a.l<b.l; } bool use[2005]; int f[2005]; int min_cardinality(int N) { n=N; cul[0]=1; use[0]=1; spec.push_back(0); move_inside(0); int nr=1; for(int i=1;i<n;i++) { move_inside(i); int cnt=press_button(); if(cnt>=2) move_outside(i); else { use[i]=1; nr++; cul[i]=nr; spec.push_back(i); } } int D=nr; int B=n/D; int loga=0; for(int i=0;i<20;i++) if((1<<i)<=B) loga=i; int I=D; int b=1; vector<int> v; for(int i=0;i<n;i++) v.push_back(i); for(int i=loga;i>=0;i--) { b+=(1<<i); random_shuffle(v.begin(),v.end()); vector<int> added; for(int j:v) if(!use[j]) { use[j]=1; I++; move_inside(j); added.push_back(j); if(press_button()>b) { added.pop_back(); move_outside(j); use[j]=0; I--; } if(I==b*D) break; } if(I<b*D) { b-=(1<<i); for(int j=0;j<n;j++) if(!use[j]) use[j]=1; for(int j:added) { use[j]=0; move_outside(j); I--; } } } return b; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...