Cod sursa(job #1223810)
| Utilizator | Data | 28 august 2014 21:55:07 | |
|---|---|---|---|
| Problema | Ghiozdan | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.12 kb |
#include <cstdio>
FILE*f=fopen("ghiozdan.in","r");
FILE*h=fopen("ghiozdan.out","w");
int a[201],v[75001],d[75001];
int main()
{
int n,g;
fscanf(f,"%d%d",&n,&g);
for ( int i=1;i<=n;++i )
{
int e;
fscanf(f,"%d",&e);
++a[e];
}
v[0]=1;
for ( int i=200;i>=1;--i )
if ( a[i]!=0 )
for ( int j=g-i;j>=0;--j )
if ( v[j]!=0 )
{
for ( int k=1;k<=a[i]&&i*k+j<=g;++k )
{
if ( v[i*k+j]!=0 )continue;
v[i*k+j]=v[i*(k-1)+j]+1;
d[i*k+j]=i;
}
}
int r;
for ( int i=g;i>=1;--i )
if ( v[i]!=0 )
{
r=i;
break;
}
fprintf(h,"%d %d\n",r,v[r]-1);
while ( r!=0 )
{
fprintf(h,"%d\n",d[r]);
r-=d[r];
}
return 0;
}
