Submission #1230475

#TimeUsernameProblemLanguageResultExecution timeMemory
1230475badge881Counting Mushrooms (IOI20_mushrooms)C++20
0 / 100
0 ms420 KiB
#include <bits/stdc++.h>
using namespace std;
int use_machine(vector<int>);

int count_mushrooms(int n)
{
	pair<int, int> posequals;
	bool isequal0 = true;
	int a = use_machine({0, 1});
	if (n == 2)
		return 2 - a;
	if (a == 0)
		posequals = {0, 1};
	else
	{
		a = use_machine({0, 2});
		if (a == 0)
			posequals = {0, 2};
		else
			posequals = {1, 2}, isequal0 = false;
	}
	int ans = 1 + isequal0;
	for (int i = 2 + (posequals.second == 2); i < n; i++)
	{
		if (isequal0)
		{
			if (i == n - 1)
				ans += __builtin_popcount(use_machine({posequals.first, i, posequals.second}));
			else
				ans += __builtin_popcount(use_machine({posequals.first, i, posequals.second, i + 1}));
		}
		else
		{
			if (i == n - 1)
				ans += 1 - __builtin_popcount(use_machine({posequals.first, i, posequals.second}));
			else
				ans += 2 - __builtin_popcount(use_machine({posequals.first, i, posequals.second, i + 1}));
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...