Cod sursa(job #423174)
| Utilizator | Data | 23 martie 2010 16:01:58 | |
|---|---|---|---|
| Problema | Economie | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <stdio.h>
FILE *f=fopen("economie.in","r"),*g=fopen("economie.out","w");
int n,v[1001],i,j,max,k,v2[50001],nr;
int main(void)
{
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%d",&v[i]);
v2[v[i]]=-1;
if (max<v[i]) max=v[i];
}
nr=n;
for (i=1;i<=n;i++)
{
if (v2[v[i]]==1) {v[i]=0;nr--;continue;}
for (j=1;j<=max;j++)
if (v2[j]!=0 && j+v[i]<=max) v2[j+v[i]]=1;
}
fprintf(g,"%d\n",nr);
for (i=1;i<=n;i++)
if (v[i]!=0)
fprintf(g,"%d\n",v[i]);
fclose(g);
return 0;
}