제출 #589047

#제출 시각아이디문제언어결과실행 시간메모리
589047LIF버섯 세기 (IOI20_mushrooms)C++14
56.64 / 100
24 ms508 KiB
#include "mushrooms.h"
#include<bits/stdc++.h>
using namespace std;

int count_mushrooms(int n) {
	std::vector <int> m;
	vector<int> a;
	vector<int> b; 
	int aans = 1;
	int bans = 0;
	a.push_back(0);
	
	m.push_back(0);
	bool check[200005];
	for(int i=1;i<200&&i<n;i++)
	{
		m.push_back(i);
		if(use_machine(m) == 1)
		{
			bans++;
			b.push_back(i);
		}
		else
		{
			aans++;
			a.push_back(i);
		}
		m.pop_back();
	}
	m.clear();
	if(b.size()>a.size()) //that means we can use b to compute
	{
		
		for(int i=200;i<n;i+=b.size()-1)
		{	
			int headb = 0;
			int headch = i;
			for(int j=0;j<b.size()*2-1;j++)
			{
				if(j%2==0)
				{
					m.push_back(b[headb]);
					headb++;
				}
				else
				{
					if(headch>=n)break;
					m.push_back(headch);
					check[headch] = true;
					headch++;
				}
			}
			int ans  = use_machine(m);
			ans /=2;
			aans += ans;
			m.clear();
		}
	}
	else
	{
		for(int i=200;i<n;i+=a.size()-1)
		{
			int heada = 0;
			int headch = i;
			for(int j=0;j<a.size()*2-1;j++)
			{
				if(j%2==0)
				{
					m.push_back(a[heada]);
					heada++;
				}
				else
				{
					if(headch>=n)break;
					check[headch]=true;
					m.push_back(headch);
					headch++;
				}
			}
			int ans = use_machine(m);
			ans /=2; //it is the count of b
			int asize = m.size()/2+1;
			aans+= (m.size() - asize - ans);
			m.clear();
		}
	}
	m.clear();
	m.push_back(0);
	for(int i=200;i<n;i++)
	{
		if(check[i] == false)
		{
			m.push_back(i);
			if(use_machine(m) == 0)
			{
				aans++;	
			}
			m.pop_back();
		}
	}
	
	
	return aans;
}

컴파일 시 표준 에러 (stderr) 메시지

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:38:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |    for(int j=0;j<b.size()*2-1;j++)
      |                ~^~~~~~~~~~~~~
mushrooms.cpp:65:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |    for(int j=0;j<a.size()*2-1;j++)
      |                ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...