Pagini recente » Cod sursa (job #1834656) | Cod sursa (job #3253072) | Cod sursa (job #2053126) | Cod sursa (job #2496869) | Cod sursa (job #2422551)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int w[75001],f[201];
pair <int,int> tt[75001];
int main()
{
FILE *fin=fopen ("ghiozdan.in","r");
FILE *fout=fopen ("ghiozdan.out","w");
int n,g,i,j,x,k,sol;
fscanf (fin,"%d%d",&n,&g);
for (i=1;i<=n;i++){
fscanf (fin,"%d",&x);
f[x]++;
}
for (i=200;i;i--){
if (f[i]){
for (j=g;j;j--){
if (!w[j]){
for (k=1;k<=f[i] && j - i * k >=0 ; k++){
if (w[j - i*k] || j == i*k){
w[j] = k + w[j - i*k];
tt[j] = make_pair(i,k);
break;
}
}
}
}
}
}
sol = g;
while (!w[sol])
sol--;
fprintf (fout,"%d %d\n",sol,w[sol]);
while (sol){
for (i=1;i<=tt[sol].second;i++)
fprintf (fout,"%d\n",tt[sol].first);
sol = sol - tt[sol].first * tt[sol].second;
}
/// doar testez daca nu iau tle:)
return 0;
}