Pagini recente » Cod sursa (job #586867) | Cod sursa (job #840170) | Cod sursa (job #1908787) | Cod sursa (job #1324393) | Cod sursa (job #411694)
Cod sursa(job #411694)
#include<stdio.h>
#define MAX 999999999
int n,g,car[201];
struct mat
{
int val,vec[201],obj;
}sol[75001];
void read()
{
FILE*f=fopen("ghiozdan.in","r");
fscanf(f,"%d%d",&n,&g);
int i,var;
for(i=1;i<=n;++i)
{
fscanf(f,"%d",&var);
++car[var];
}
fclose(f);
}
int main()
{
read();
int i,j;
for(i=1;i<=g;++i)
{
sol[i].val=0;
if(i==g)
printf("DA");
for(j=1;j<=200;++j)
if(j<=i&&sol[i-j].vec[j]+1<=car[j])
{
if(j+sol[i-j].val>sol[i].val&&j+sol[i-j].val<g||j+sol[i-j].val==sol[i].val&&1+sol[i-j].obj<sol[i].obj)
{sol[i]=sol[i-j];
sol[i].val+=j;
++sol[i].obj;
++sol[i].vec[j];}
}
if(sol[i].val==MAX)
{
sol[i]=sol[i-1];
}
}
FILE*h=fopen("ghiozdan.out","w");
fprintf(h,"%d %d\n",sol[g].val,sol[g].obj);
int var;
for(i=1;i<=200;++i)
{
var=sol[g].vec[i];
for(;var;--var)
fprintf(h,"%d\n",i);
}
fclose(h);
return 0;
}