Submission #1292727

#TimeUsernameProblemLanguageResultExecution timeMemory
1292727julia_08Counting Mushrooms (IOI20_mushrooms)C++20
10 / 100
51 ms808 KiB
#include <bits/stdc++.h>
#include "mushrooms.h"

using namespace std;

int ask(vector<int> &v){
	if((int) v.size() < 2) return 0;
	return use_machine(v);
}

int count_mushrooms(int n){

	vector<int> cur;

	for(int i=1; i<n; i++) cur.push_back(i);

	vector<int> a = {0}, b;

	int sz = n - 1;

	while((int) a.size() <= sz && (int) b.size() <= sz){

		int v = cur.back();
		cur.pop_back();

		sz --;

		vector<int> to_ask = {0, v};

		if(ask(to_ask) == 0){
			a.push_back(v);
		} else b.push_back(v);

	}

	int cnt = 0;

	if((int) a.size() > sz){

		vector<int> to_ask;

		for(int i=0; i<sz; i++){
			to_ask.push_back(a[i]);
			to_ask.push_back(cur[i]);
		}

		to_ask.push_back(a[sz]);

		int ans = ask(to_ask);

		cnt = (int) a.size() + (sz - (ans / 2));

	} else{

		vector<int> to_ask;

		for(int i=0; i<sz; i++){
			to_ask.push_back(b[i]);
			to_ask.push_back(cur[i]);
		}

		to_ask.push_back(b[sz]);

		int ans = ask(to_ask);

		cnt = (int) a.size() + ans / 2;

	}

	return cnt;

}
#Verdict Execution timeMemoryGrader output
Fetching results...