记录编号 31863 评测结果 AAAAAAAAAA
题目名称 [USACO 1.4] 母亲的牛奶 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2011-11-04 10:48:33 内存使用 11.70 MiB
显示代码纯文本
#include <cstdio>
using namespace std;

int que[3][1000000]={{0}};

int main(void)
{
	freopen("milk3.in","r",stdin);
	freopen("milk3.out","w",stdout);
	int i,j,k,l,tail=0,head=0,temp,temp2,room[3];
	bool equal,dup,ans[21]={false};
//	bool used[3][21]={{false}};
	for (i=0;i<3;i++)
		scanf("%d",&room[i]);
	que[2][0]=room[2];
	ans[room[2]]=true;
//	used[2][room[2]]=true;
//	used[1][0]=true;
//	used[0][0]=true;
	while (tail<=head)
	{
		for (i=0;i<3;i++)
			if (que[i][tail])
			{
				for (j=0;j<3;j++)
					if (j!=i)
					{
						head++;
						for (k=0;k<3;k++)
							if (k!=i&&k!=j)
								break;
						que[k][head]=que[k][tail];
						temp=que[i][tail];
						temp2=room[j]-que[j][tail];
						if (temp>temp2)
						{
							que[i][head]=temp-temp2;
							que[j][head]=room[j];
						}
						else
						{
							que[i][head]=0;
							que[j][head]=que[j][tail]+temp;
						}
						dup=false;
						for (k=0;k<head;k++)
						{
							equal=true;
							for (l=0;l<3;l++)
								if (que[l][k]!=que[l][head])
									equal=false;
							if (equal)
							{
								dup=true;
								break;
							}
						}
						if (dup)
							head--;
						else
							if (que[0][head]==0)
								ans[que[2][head]]=true;
//						if (used[i][que[i][head]]&&used[j][que[j][head]]&&used[k][que[k][head]])
//							head--;
//						else
//						{
//							used[i][que[i][head]]=true;
//							used[j][que[j][head]]=true;
//							used[k][que[k][head]]=true;
//						}
					}
			}
		tail++;
	}
//	for (i=0;i<room[2];i++)
//		if (used[2][i])
//			printf("%d ",i);
//	printf("%d\n",room[2]);
	for (i=0;i<room[2];i++)
		if (ans[i])
			printf("%d ",i);
	printf("%d\n",room[2]);
	fclose(stdin);
	fclose(stdout);
	return(0);
}