제출 #1056226

#제출 시각아이디문제언어결과실행 시간메모리
1056226vjudge1드문 곤충 (IOI22_insects)C++17
61.41 / 100
83 ms1300 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using ii = pair<int, int>; bool gasit = false; vi Perm; void move_inside2(int p) { move_inside(Perm[p]); } void move_outside2(int p) { move_outside(Perm[p]); } set<int> Cur; vector<ii> cauta(vi Cul, vi V) { vector<ii> Re; if(gasit) return Re; if(V.empty()) { gasit = true; return vector<ii>(); } if(Cul.size() == 1) { for(auto it : V) Re.push_back({it, Cul[0]}); return Re; } vi C1, C2; for(int i = 0; i < int(Cul.size()) / 2; ++i) { C1.push_back(Cul[i]); } for(int i = int(Cul.size()) / 2; i < int(Cul.size()); ++i) { C2.push_back(Cul[i]); } set<int> SC1; for(auto it : C1) SC1.insert(it); vi de_scos; for(auto it : Cur) { if(!SC1.count(it)) de_scos.push_back(it); } for(auto it : de_scos) { Cur.erase(it); move_outside2(it); } for(auto it : C1) { if(!Cur.count(it)) { move_inside2(it); Cur.insert(it); } } vi V1, V2; for(auto it : V) { move_inside2(it); if(press_button() == 2) V1.push_back(it); else V2.push_back(it); move_outside2(it); } // for(auto it : C1) { // move_outside2(it); // } auto Re1 = cauta(C1, V1), Re2 = cauta(C2, V2); for(auto it : Re1) Re.push_back(it); for(auto it : Re2) Re.push_back(it); return Re; } int min_cardinality(int n) { Perm.clear(); for(int i = 0; i < n; ++i) Perm.push_back(i); mt19937 rng(71); shuffle(Perm.begin(), Perm.end(), rng); vi Cul, Rest; for(int i = 0; i < n; ++i) { move_inside2(i); if(press_button() == 1) { Cul.push_back(i); } else { move_outside2(i); Rest.push_back(i); } } for(auto it : Cul) move_outside2(it); if(Cul.size() > Rest.size()) return 1; auto Per = cauta(Cul, Rest); if(gasit) return 1; map<int, int> Fr; for(auto it : Cul) ++Fr[it]; for(auto [p, cul] : Per) ++Fr[cul]; int mi = n; for(auto [cul, fr] : Fr) mi = min(mi, fr); return mi; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...