Pagini recente » Cod sursa (job #2604171) | Cod sursa (job #2330988) | Cod sursa (job #3287476) | Cod sursa (job #2757182) | Cod sursa (job #1148075)
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
#define NMAX 20010
#define GMAX 75010
int A[NMAX];
int S[GMAX];
int P[GMAX];
int N, G;
int main()
{
int i, j, k, x;
f >> N >> G;
for (i=1; i<=N; i++) f >> x, A[x]++;
P[0] = 1;
for (i=200; i>0; i--){
if (A[i]){
for (j=G-i; j>=0; j--){
if (P[j]){
for (k=1; k<=A[i] && j+k*i<=G && !P[j+k*i]; k++){
S[j+k*i] = i;
P[j+k*i] = P[j] + k;
}
}
}
}
}
for (i=G; !S[i]; i--);
g << i << ' ' << P[i]-1 << '\n';
for (; i; i-=S[i]) g << S[i] << '\n' ;
fin.close(); fout.close();
return 0
}