제출 #836519

#제출 시각아이디문제언어결과실행 시간메모리
836519SamAndRarest Insects (IOI22_insects)C++17
88.64 / 100
70 ms488 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define m_p make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) typedef long long ll; mt19937 rnf(2106); const int N = 2003; vector<int> q[N]; int min_cardinality(int N) { vector<int> v; vector<int> b; for (int i = 0; i < N; ++i) { move_inside(i); if (press_button() == 1) { v.push_back(i); } else { move_outside(i); b.push_back(i); } } for (int i = 0; i < sz(v); ++i) move_outside(v[i]); //if (sz(v) > 100) { int ans = 1; while (!b.empty()) { for (int i = sz(b) - 1; i >= 0; --i) swap(b[i], b[rnf() % (i + 1)]); vector<int> vv; vector<int> bb; for (int i = 0; i < sz(b); ++i) { if (sz(v) == sz(vv)) { bb.push_back(b[i]); continue; } move_inside(b[i]); if (press_button() == 1) { vv.push_back(b[i]); } else { move_outside(b[i]); bb.push_back(b[i]); } } if (sz(vv) < sz(v)) break; ++ans; for (int i = 0; i < sz(vv); ++i) move_outside(vv[i]); b = bb; } return ans; } vector<int> l, r, u; l.assign(sz(b), 0); r.assign(sz(b), sz(v) - 1); u.assign(sz(b), -1); while (1) { for (int i = 0; i < sz(v); ++i) q[i].clear(); bool z = false; for (int i = 0; i < sz(b); ++i) { if (l[i] <= r[i]) { int m = (l[i] + r[i]) / 2; q[m].push_back(i); z = true; } } if (!z) break; for (int i = 0; i < sz(v); ++i) { move_inside(v[i]); for (int j = 0; j < sz(q[i]); ++j) { move_inside(b[q[i][j]]); if (press_button() == 2) { u[q[i][j]] = i; r[q[i][j]] = i - 1; } else l[q[i][j]] = i + 1; move_outside(b[q[i][j]]); } } for (int i = 0; i < sz(v); ++i) { move_outside(v[i]); } } vector<int> q; q.assign(sz(v), 1); for (int i = 0; i < sz(b); ++i) ++q[u[i]]; int ans = q[0]; for (int i = 0; i < sz(v); ++i) ans = min(ans, q[i]); return ans; } /* 10 1 1 2 2 1 2 3 3 3 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...