Submission #1214876

#TimeUsernameProblemLanguageResultExecution timeMemory
1214876Math4Life2020Counting Mushrooms (IOI20_mushrooms)C++20
80.71 / 100
3 ms516 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = int; using pii = pair<ll,ll>;

#include "mushrooms.h"

ll count_mushrooms(ll N) {
    queue<ll> left;
    ll nA=0;
    vector<ll> va,vb; //vectors of known
    va.push_back(0);
    for (ll i=1;i<N;i++) {
        left.push(i);
    }
    while (left.size()!=0) {
        ll MXS = max(va.size(),vb.size());
        MXS = min(MXS,(ll)left.size());
        if (vb.size()>=va.size()) {
            vector<ll> vuse;
            for (ll i=0;i<MXS;i++) {
                vuse.push_back(vb[i]);
                vuse.push_back(left.front());
                left.pop();
            }
            ll y = use_machine(vuse);
            nA += (y/2);
            if (y%2==0) {
                vb.push_back(vuse.back());
            } else {
                va.push_back(vuse.back());
            }
        } else {
            vector<ll> vuse;
            for (ll i=0;i<MXS;i++) {
                vuse.push_back(va[i]);
                vuse.push_back(left.front());
                left.pop();
            }
            ll y = use_machine(vuse);
            nA += MXS-1-(y/2);
            if (y%2==1) {
                vb.push_back(vuse.back());
            } else {
                va.push_back(vuse.back());
            }
        }
    }
    return (va.size()+nA);
}
#Verdict Execution timeMemoryGrader output
Fetching results...