Submission #1188694

#TimeUsernameProblemLanguageResultExecution timeMemory
1188694hyakup버섯 세기 (IOI20_mushrooms)C++20
52.56 / 100
3 ms512 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; #define vi vector<int> int count_mushrooms( int n ){ mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<int> ordem(n); iota( ordem.begin(), ordem.end(), 0 ); shuffle( ordem.begin() + 1, ordem.end(), rng ); const int k = 150; vi a, b; a.push_back(0); int l = 1; while( a.size() < k && b.size() < k && l < n ){ vi v = { 0, ordem[l] }; if( use_machine(v) == 1 ) b.push_back(ordem[l]); else a.push_back(ordem[l]); l++; } int cont = 0; bool invert = (a.size() == k); vi v = (( invert ) ? a : b ); while( l < n ){ int r = min(l + k, n); vi aux; for( int i = 0; i < k; i++ ){ aux.push_back(v[i]); if( l + i < r ) aux.push_back(ordem[l + i]); } int query = (use_machine(aux) + 1)/2; cont += (( invert ) ? (r - l) - query : query ); l = r; } return a.size() + cont; }
#Verdict Execution timeMemoryGrader output
Fetching results...