Submission #672102

#TimeUsernameProblemLanguageResultExecution timeMemory
672102tbzardRarest Insects (IOI22_insects)C++17
10 / 100
352 ms536 KiB
#include <bits/stdc++.h> using namespace std; void move_inside(int i); void move_outside(int i); int press_button(); bool vis[2222]; bool check[2222]; int min_cardinality(int n){ vector<int> v; for(int i=0;i<n;i++){ move_inside(i); int r = press_button(); if(r == 2) move_outside(i); else{ v.push_back(i); vis[i] = 1; } } int ans = n/(int)v.size(); int lo = 1, hi = ans-1; while(lo <= hi){ memset(check, 0, sizeof(check)); int mid = (lo+hi)/2; vector<int> add; for(int i=0;i<n;i++){ if(vis[i]) continue; move_inside(i); int r = press_button(); if(r > mid){ int idx = 0; for(int i=0;i<(int)v.size();i++){ move_outside(v[i]); int r = press_button(); if(r == mid){ idx = i; break; } } for(int i=0;i<=idx;i++){ move_inside(v[i]); } move_outside(i); check[idx] = 1; } else add.push_back(i); } for(int i=0;i<(int)add.size();i++){ move_outside(add[i]); } bool ok = 0; for(int i=0;i<(int)v.size();i++){ if(!check[i]){ ok = 1; break; } } if(ok) ans = mid, hi = mid-1; else lo = mid+1; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...