记录编号 |
31863 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 1.4] 母亲的牛奶 |
最终得分 |
100 |
用户昵称 |
Truth.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);
}