记录编号 131510 评测结果 A
题目名称 [POJ1017] 装箱问题 最终得分 100
用户昵称 Gravatar奶猹 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2014-10-24 16:40:46 内存使用 0.29 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cmath>
#define min(a,b) ((a)<(b)?(a):(b))

int num[7];
int ans=0;

void work();
void outit();

int main()
{
	freopen("packets.in","r",stdin);
	freopen("packets.out","w",stdout);
	while(scanf("%d%d%d%d%d%d",&num[1],&num[2],&num[3],&num[4],&num[5],&num[6])==6)
	{
		if(!num[1]&&!num[2]&&!num[3]&&!num[4]&&!num[5]&&!num[6])break;
		work();
		outit();
	}
	return 0;
}
void work()
{
	ans=0;
	ans+=num[6];
	ans+=num[5];
	num[1]-=11*num[5];
	if(num[4])
	{
		ans+=num[4];
		if(num[2]>=num[4]*5)num[2]-=num[4]*5;
		else
		{
			num[1]-=36*num[4]-16*num[4]-4*num[2];
			num[2]=0;
		}
	}
	if(num[3])
	{
		ans+=num[3]/4;
		num[3]%=4;
		switch(num[3])
		{
			case 3:
			{
				ans++;
				if(num[2]>=1) num[2]-=1,num[1]-=5;
				else num[1]-=9;
				break;
			}
			case 2:
			{
				ans++;
				if(num[2]>=3) num[2]-=3,num[1]-=6;
				else
				{
					num[1]-=18-num[2]*4;
					num[2]=0;
				}
				break;
			}
			case 1:
			{
				ans++;
				if(num[2]>=5) num[2]-=5,num[1]-=7;
				else
				{
					num[1]-=27-num[2]*4;
					num[2]=0;
				}
				break;
				
			}
			case 0:break;
		}
	}
	ans+=num[2]/9;
	num[2]%=9;
	if(num[1]<0) num[1]=0;
	int s=num[1]+num[2]*4;
	if(s%36)
	{
		ans+=s/36+1;
	}
	else ans+=s/36;
}
void outit()
{
	printf("%d\n",ans);
}