Submission #1059988

#TimeUsernameProblemLanguageResultExecution timeMemory
1059988AmirAli_H1Rarest Insects (IOI22_insects)C++17
47.50 / 100
148 ms964 KiB
// In the name of Allah #include <bits/stdc++.h> #include "insects.h" using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define endl '\n' #define sep ' ' #define F first #define S second #define Mp make_pair #define pb push_back #define all(x) (x).begin(),(x).end() #define len(x) ((ll) (x).size()) const int maxn = 2000 + 4; int n, k; set<int> st; int res; vector<int> ls; void addx(int j) { st.insert(j); move_inside(j); } void delx(int j) { st.erase(j); move_outside(j); } int askx() { return press_button(); } void del_all() { while (!st.empty()) { int j = *st.begin(); delx(j); } } bool ok1(ll x) { del_all(); for (int i = 0; i < n; i++) { addx(i); if (askx() > x) delx(i); } return (len(st) == k * x); } int solve1(int R) { int l = 1, r = R + 1; while (r - l > 1) { int mid = (l + r) / 2; if (ok1(mid)) l = mid; else r = mid; } return l; } int solve2(int R) { return 0; } int min_cardinality(int N) { n = N; for (int i = 0; i < n; i++) { addx(i); if (askx() >= 2) delx(i); } for (int j : st) ls.pb(j); k = len(ls); del_all(); if (1) return solve1(n / k); else return solve2(k); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...