Submission #1286295

#TimeUsernameProblemLanguageResultExecution timeMemory
1286295lopkusRarest Insects (IOI22_insects)C++20
0 / 100
53 ms400 KiB
#include <bits/stdc++.h> #include "insects.h" std::vector<int> added; void add(int i) { added.push_back(i); move_inside(i); } void del(int i) { for(int j = 0; j < added.size(); j++) { if(added[j] == i) { added.erase(added.begin() + j); break; } } move_outside(i); } int get() { return press_button(); } void del_all() { for(auto x : added) { del(x); } added.clear(); } int min_cardinality(int n) { int s = std::sqrt(n); int cnt = 0; std::vector<int> vec; for(int i = 0; i < n; i++) { add(i); if(get() == 1) { cnt += 1; vec.push_back(i); } else { del(i); } } del_all(); if(cnt <= n) { int ans = n + 1; for(auto x : vec) { add(x); int occ = 1; for(int i = x + 1; i < n; i++) { add(i); if(get() == occ + 1) { occ += 1; } else { del(i); } } ans = std::min(ans, occ); del_all(); } del_all(); return ans; } else { std::vector<int> was(n); int ans = n + 1; for(int occ = 1; occ <= n + 1; occ++) { int all = 0; for(int i = 0; i < n; i++) { if(was[i]) { continue; } add(i); if(get() == occ) { all += 1; was[i] = 1; } else { del(i); } } if(cnt != all) { ans = occ - 1; break; } } del_all(); return ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...