Submission #1072858

#TimeUsernameProblemLanguageResultExecution timeMemory
1072858IgnutCounting Mushrooms (IOI20_mushrooms)C++17
56.78 / 100
7 ms612 KiB
// Ignut

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ld = long double;

int use_machine(vector<int> x);

int count_mushrooms(int n) {
    int res = 1;
    vector<int> A = {0}, B = {};
    vector<int> vec;
    for (int i = 1; i < n; i ++) vec.push_back(i);
    int Q = 200;
    for (int i = 0; i < Q; i ++) {
        if (vec.empty()) {
            return res;
        }
        int v = vec.back(); vec.pop_back();
        if (use_machine({0, v}) == 0) {
            res ++;
            A.push_back(v);
        }
        else {
            B.push_back(v);
        }
        if (max(A.size(), B.size()) >= 130)
            break;
    }
    while (!vec.empty()) {
        int ind = 1;
        vector<int> ask = {(A.size() >= B.size() ? A[0] : B[0])};
        while (ind < max(A.size(), B.size()) && !vec.empty()) {
            int v = vec.back(); vec.pop_back();
            ask.push_back(v);
            ask.push_back(A.size() >= B.size() ? A[ind] : B[ind]);
            ind ++;
        }
        int val = use_machine(ask);
        int cnt = ind - 1;
        if (A.size() >= B.size())
            res += cnt - val / 2;
        else
            res += val / 2;
    }
    return res;
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:35:20: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
   35 |         while (ind < max(A.size(), B.size()) && !vec.empty()) {
      |                ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...