Submission #346068

#TimeUsernameProblemLanguageResultExecution timeMemory
346068TheerapakG버섯 세기 (IOI20_mushrooms)C++17
0 / 100
1 ms876 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> vec[2];

int count_mushrooms(int n) 
{
	if(n<3) return 2-use_machine({0, 1});
	else
	{
		vec[0].push_back(0);
		vec[use_machine({0, 1})].push_back(1);
		vec[use_machine({0, 2})].push_back(2);
		int s = vec[0].size();
		for(int i=3;i<n;)
		{
			int use = vec[0].size()>vec[1].size()?0:1;
			vector<int> query;
			for(auto it=vec[use].begin(); i<n&&it!=vec[use].end(); i++, it++)
			{
				query.push_back(*it);
				query.push_back(i);
			}
			int ans = use_machine(query);
			if(ans < 2) for(auto it = ++query.begin(); ++it!=query.end(); it+=2) vec[use].push_back(*it);
			if(query.size()==4 && ans>2) vec[!use].push_back(query[1]);
			if(ans%2==0) vec[use].push_back(i-1); // last one is same
			else vec[!use].push_back(i-1); // last one is NOT same
			if(use==0) s+= (query.size()-ans)/2;
			else s+= (ans+1)/2;
		}
		return s;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...