Submission #1076720

#TimeUsernameProblemLanguageResultExecution timeMemory
1076720BoasRarest Insects (IOI22_insects)C++17
40.97 / 100
196 ms6140 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define loop(x, i) for (int i = 0; i < x; i++) #define rev(x, i) for (int i = (int)x - 1; i >= 0; i--) #define ALL(x) begin(x), end(x) #define sz(x) (int)x.size() typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<bool> vb; typedef vector<int> vi; typedef vector<vi> vvi; int min_cardinality(int N) { vi ix(N); iota(ALL(ix), 0); std::random_device rd; std::mt19937 g(rd()); std::shuffle(ix.begin(), ix.end(), g); vvi S(N); int iter = 1; S[0].pb(0); move_inside(ix[0]); for (int i = 1; i < N; i++) { move_inside(ix[i]); int res = press_button(); if (res == 2) { move_outside(ix[i]); S[1].pb(i); } else S[0].pb(i); } int t = sz(S[0]); if (t == 1) return N; while (sz(S[iter])) { if (sz(S[iter]) < t) return iter; int curSize = 1; for (int i : S[iter - 1]) move_outside(ix[i]); move_inside(ix[S[iter][0]]); vi newCurS = {S[iter][0]}; for (int s_ix = 1; s_ix < sz(S[iter]); s_ix++) { int i = S[iter][s_ix]; move_inside(ix[i]); int res = press_button(); if (res == 2) { move_outside(ix[i]); S[iter + 1].pb(i); } else { curSize++; newCurS.pb(i); } if (curSize == t) { for (int s_ix2 = s_ix + 1; s_ix2 < sz(S[iter]); s_ix2++) { int i2 = S[iter][s_ix2]; S[iter + 1].pb(i2); } break; } } if (curSize < t) return iter; S[iter] = newCurS; iter++; } return iter; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...