Submission #628454

#TimeUsernameProblemLanguageResultExecution timeMemory
628454c28dnv9q3Rarest Insects (IOI22_insects)C++17
10 / 100
340 ms208 KiB
#include "insects.h" #include <vector> #include <numeric> #include <map> using namespace std; vector<int> p; vector<int> sz; int ufind(int i) { if (p[i] == i) return i; return p[i] = ufind(p[i]); } int usz(int i) { return sz[ufind(i)]; } void umerge(int a, int b) { if (ufind(a) == ufind(b)) return; p[a] = b; sz[b] += sz[a]; } int min_cardinality(int N) { p.resize(N); sz.resize(N); iota(p.begin(), p.end(), 0); fill(sz.begin(), sz.end(), 1); int minsz = N; for (int i = 0; i < N; i++) { if (ufind(i) != i) continue; move_inside(i); for (int j = 0; j < N; j++) { if (ufind(i) == ufind(j)) continue; if (usz(i) >= minsz) continue; move_inside(j); if (press_button() == 2) umerge(j, i); move_outside(j); } move_outside(i); minsz = min(minsz, usz(i)); } return minsz; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...