Submission #1207166

#TimeUsernameProblemLanguageResultExecution timeMemory
1207166I_am_Polish_GirlCounting Mushrooms (IOI20_mushrooms)C++20
56.64 / 100
3 ms508 KiB
#include "mushrooms.h" #include <iostream> #include <vector> #include <algorithm> #include <map> #include <set> #include <unordered_map> #include <unordered_set> #include <stack> #include <queue> #include <cmath> #include <random> #include <chrono> #include <iomanip> #include <bitset> using namespace std; int count_mushrooms(int n) { if (n <= 200) { int col = 1; for (int i = 1; i < n; i++) { if (use_machine({ 0 , i }) == 0) col++; } return col; } vector <int> ind(n); for (int i = 0; i < n; i++) { ind[i] = i; } vector <int> a; vector <int> b; a.push_back(0); int sq = sqrt(n); sq = 100; int ind_ = -1; for (int i = 1; i < n; i++) { if (use_machine({ 0 , i }) == 0) a.push_back(ind[i]); else b.push_back(ind[i]); if (max(a.size(), b.size()) >= sq) { ind_ = i + 1; break; } } bool f = 0; int col = a.size(); if (b.size() == sq) { f = 1; swap(a, b); } vector <int> u; for (int i = ind_; i < n; i++) { u.push_back(ind[i]); if ((u.size() == sq - 1) or (i == n - 1)) { vector <int> q; int i__ = 0; for (int i = 0; i < u.size(); i++) { q.push_back(a[i__]); i__++; q.push_back(u[i]); } q.push_back(a[i__]); i__++; int r = use_machine(q); r /= 2; if (f == 0) col += u.size() - r; else col += r; u.clear(); } } return col; }
#Verdict Execution timeMemoryGrader output
Fetching results...