Submission #685299

#TimeUsernameProblemLanguageResultExecution timeMemory
685299grossly_overconfidentCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
1 ms208 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> decipher(int a, int b, int c) {
	vector<int> m = { a, 0, b, c };
	int c1 = use_machine(m);
	if (c1 == 0) {
		m = { 0, 0, 0 };
		return m;
	}
	if (c1 == 3) {
		m = { 1, 1, 0 };
		return m;
	}
	if (c1 == 2) {
		m = { b, a, 0, c };
		c1 = use_machine(m);
		if (c1 == 1) {
			m = { 0, 1, 0 };
		}
		else if (c1 == 3) {
			m = { 1, 0, 1 };
		}
		else if (c1 == 2) {
			m = { 1, 1, 1 };
		}
		return m;
	}
	m = { b, 0, c };
	c1 = use_machine(m);
	if (c1 == 0) {
		m = { 1, 0, 0 };
	}
	else if (c1 == 1) {
		m = { 0, 0, 1 };
	}
	else if (c1 == 2) {
		m = { 0, 1, 1 };
	}
	return m;
}

int count_mushrooms(int n) {
	int count = 0;
	int i = 0;
	while (i + 2 <= n - 1) {
		vector<int> take = decipher(i, i + 1, i + 2);
		if (take[0] == 0) {
			++count;
		}
		if (take[1] == 0) {
			++count;
		}
		if (take[2] == 0) {
			++count;
		}
		i += 3;
	}
	if ((n - 1) % 3 == 1) {
		if (use_machine({ n - 1, 0 }) == 0) {
			++count;
		}
	}
	if ((n - 1) % 3 == 2) {
		int take2 = use_machine({ n - 1, 0, n - 2 });
		if (take2 == 0) {
			count += 2;
		}
		else if (take2 == 1) {
			++count;
		}
	}
	return count;
}
#Verdict Execution timeMemoryGrader output
Fetching results...