记录编号 266669 评测结果 AAAAAAAAAA
题目名称 量取牛奶 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2016-06-08 23:20:18 内存使用 0.12 MiB
显示代码纯文本
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
bool flag[20010]={0};
int f[20010]={0},v[210]={0},p[20010][3]={0},ans[210]={0};
int cmp(const void*a,const void*b)
{
	return *(int*)a-*(int*)b;
}
int _521()
{
	freopen("milk4.in","r",stdin);
	freopen("milk4.out","w",stdout);
	int i,j,k,m,n;
	scanf("%d%d",&m,&n);
	for(i=1;i<=n;i++) scanf("%d",v+i);
	qsort(v+1,n,sizeof(v[0]),cmp);
	memset(f,127,sizeof(f));
	flag[0]=1;f[0]=0;
	for(i=1;i<=n;i++)
	{
		for(j=0;j<=m;j++)
		if(flag[j])
		for(k=j+v[i];k<=m;k+=v[i])
		{
			flag[k]=1;
			if(f[k]>f[j]+1)
			  f[k]=f[j]+1,p[k][0]=v[i],p[k][1]=i,p[k][2]=j;
			else if(f[k]==f[j]+1&&p[j][1]<p[p[k][2]][1])
			  p[k][0]=v[i],p[k][1]=i,p[k][2]=j;
		}
	}
	printf("%d",f[m]);
	i=0;
	while(m) ans[++i]=p[m][0],m=p[m][2];
	while(i) printf(" %d",ans[i--]);
	return 0;
}
int _520=_521();
int main(){;}