Submission #606401

#TimeUsernameProblemLanguageResultExecution timeMemory
606401CyberCowCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
1 ms296 KiB
#include "mushrooms.h"
#include <vector>
using namespace std;
vector<int> a, b;
int nsh[20006];

int count_mushrooms(int n) {
	int ans = 1, gt = 0;
	if (n <= 250)
	{
		for (int i = 1; i < n - 1; i += 2)
		{
			ans += 2 - use_machine({ i, 0, i + 1 });
		}
		if (n % 2 == 0)
			ans += 1 - use_machine({ 0, n - 1 });
		return ans;
	}
	int st = 0, st1 = 0;
	if (use_machine({ 0, 1 }))
	{
		st = 1;
		if (use_machine({ 0, 2 }))
			st1 = 1;
	}
	if(st == 0)
	{
		
		a.push_back(0);
		a.push_back(1);
		for (int i = 2; i < 200; i+=2)
		{
			int qan = use_machine({ 0, i, 1, i + 1 });
			if (qan == 0)
			{
				a.push_back(i);
				a.push_back(i + 1);
			}
			else if(qan == 1)
			{
				a.push_back(i);
				b.push_back(i + 1);
			}
			else if (qan == 2)
			{
				b.push_back(i);
				a.push_back(i + 1);
			}
			else
			{
				b.push_back(i);
				b.push_back(i + 1);
			}
		}
	}
	else if (st == 1 && st1 == 0)
	{
		a.push_back(0);
		b.push_back(1);
		a.push_back(2);
		for (int i = 3; i < 200; i += 2)
		{
			int qan = use_machine({ 0, i, 2, i + 1 });
			if (qan == 0)
			{
				a.push_back(i);
				a.push_back(i + 1);
			}
			else if (qan == 1)
			{
				a.push_back(i);
				b.push_back(i + 1);
			}
			else if (qan == 2)
			{
				b.push_back(i);
				a.push_back(i + 1);
			}
			else
			{
				b.push_back(i);
				b.push_back(i + 1);
			}
		}
	}
	else
	{
		a.push_back(0);
		b.push_back(1);
		b.push_back(2);
		for (int i = 3; i < 200; i += 2)
		{
			int qan = use_machine({ 1, i, 2, i + 1 });
			if (qan == 0)
			{
				a.push_back(i);
				a.push_back(i + 1);
			}
			else if (qan == 1)
			{
				a.push_back(i);
				b.push_back(i + 1);
			}
			else if (qan == 2)
			{
				b.push_back(i);
				a.push_back(i + 1);
			}
			else
			{
				b.push_back(i);
				b.push_back(i + 1);
			}
		}
	}
	int j;
	vector<int> x;
	for (int i = 201; i < n; i++)
	{
		x.clear();
		if (a.size() > b.size())
		{
			int vr = 0;
			for (j = 0; j < a.size() && i + j < n; j++)
			{
				x.push_back(a[j]);
				x.push_back(i + j);
				vr = j;
			}
			int f = use_machine(x);
			ans += vr - f / 2;
			if (f % 2)
			{
				b.push_back(x.back());
			}
			else
			{
				a.push_back(x.back());
				ans++;
			}
		}
		else
		{
			int vr = 0;
			for (j = 0; j < b.size() && i + j < n; j++)
			{
				x.push_back(b[j]);
				x.push_back(i + j);
				vr = j;
			}
			int f = use_machine(x);
			ans += f / 2;
			if (f % 2)
			{
				a.push_back(x.back());
				ans++;
			}
			else
			{
				b.push_back(x.back());
			}
		}
	}
	return ans;
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:124:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  124 |    for (j = 0; j < a.size() && i + j < n; j++)
      |                ~~^~~~~~~~~~
mushrooms.cpp:145:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  145 |    for (j = 0; j < b.size() && i + j < n; j++)
      |                ~~^~~~~~~~~~
mushrooms.cpp:144:8: warning: variable 'vr' set but not used [-Wunused-but-set-variable]
  144 |    int vr = 0;
      |        ^~
mushrooms.cpp:8:15: warning: unused variable 'gt' [-Wunused-variable]
    8 |  int ans = 1, gt = 0;
      |               ^~
#Verdict Execution timeMemoryGrader output
Fetching results...