제출 #1240321

#제출 시각아이디문제언어결과실행 시간메모리
1240321Ghulam_Junaid버섯 세기 (IOI20_mushrooms)C++20
80.71 / 100
3 ms632 KiB
#include <bits/stdc++.h>
#include "mushrooms.h"
using namespace std;

mt19937 rng(678147511);

int count_mushrooms(int n) {
	vector<int> a, b, order;
    a.push_back(0);
    for (int i = 1; i < n; i ++)
        order.push_back(i);
    shuffle(order.begin(), order.end(), rng);

    int ans = 1;
    while (order.size()){
        if (a.size() > b.size()){
            vector<int> vec;
            int sz = min(a.size(), order.size());
            for (int i = 0; i < sz; i ++){
                vec.push_back(order.back());
                vec.push_back(a[i]);
                order.pop_back();
            }

            int val = use_machine(vec);
            if (val % 2)
                b.push_back(vec[0]);
            else
                a.push_back(vec[0]);
            ans += sz - (val + 1) / 2;
        }
        else{
            vector<int> vec;
            int sz = min(b.size(), order.size());
            for (int i = 0; i < sz; i ++){
                vec.push_back(order.back());
                vec.push_back(b[i]);
                order.pop_back();
            }

            int val = use_machine(vec);
            if (val % 2)
                a.push_back(vec[0]);
            else
                b.push_back(vec[0]);
            ans += (val + 1) / 2;
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...