Submission #628436

#TimeUsernameProblemLanguageResultExecution timeMemory
628436c28dnv9q3Rarest Insects (IOI22_insects)C++17
0 / 100
2 ms256 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-1; i++) { if (usz(i) >= minsz) continue; move_inside(i); for (int j = i+1; j < N; j++) { if (usz(i) >= minsz || usz(j) >= minsz) continue; if (ufind(i) == ufind(j)) continue; move_inside(j); int k = press_button(); if (k == 2) umerge(i, j); 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...