Submission #604857

#TimeUsernameProblemLanguageResultExecution timeMemory
604857TigryonochekkCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
0 ms208 KiB
#include <iostream>
#include "mushrooms.h"
#include <vector>
#define ll long long
using namespace std;

const int wtf = 3;

int count_mushrooms(int n) {
	vector<int> a, b;
	a.push_back(0);
	int ans = 1;
	int x = min(wtf, n);
	for (int i = 1; i < x; i++) {
		int u = use_machine({ 0, i });
		if (u == 0) {
			a.push_back(i);
			ans++;
		}
		else {
			b.push_back(i);
		}
	}
	if (x == n) 
		return ans;
	if (a.size() >= b.size()) {
		int c = a.size();
		int i = x;
		while (i + (c - 1) - 1 < n) {
			vector<int> m;
			m.push_back(a[0]);
			for (int j = 1; j < c; j++) {
				m.push_back(i);
				i++;
				m.push_back(a[j]);
			}
			int k = use_machine(m);
			ans += c - 1 - k / 2;
		}
		vector<int> m;
		m.push_back(a[0]);
		int j = 1;
		for (; i < n; i++) {
			m.push_back(i);
			m.push_back(a[j]);
			j++;
		}
		int k = use_machine(m);
		ans += c - 1 - k / 2;
	}
	else {
		int c = b.size();
		int i = x;
		while (i + (c - 1) - 1 < n) {
			vector<int> m;
			m.push_back(b[0]);
			for (int j = 1; j < c; j++) {
				m.push_back(i);
				i++;
				m.push_back(b[j]);
			}
			int k = use_machine(m);
			ans += k / 2;
		}
		vector<int> m;
		m.push_back(b[0]);
		int j = 1;
		for (; i < n; i++) {
			m.push_back(i);
			m.push_back(b[j]);
			j++;
		}
		int k = use_machine(m);
		ans += k / 2;
	}
	return ans;
}

/*
8 
0 1 1 0 1 0 1 0

11 
0 1 1 1 1 1 1 0 0 0 0
*/
#Verdict Execution timeMemoryGrader output
Fetching results...