Pagini recente » Istoria paginii runda/cnrv_oji_x | Istoria paginii runda/judet9-1 | Cod sursa (job #1215040) | Cod sursa (job #449715) | Cod sursa (job #18545)
Cod sursa(job #18545)
#include <cstdio>
#define FIN "ghiozdan.in"
#define FOUT "ghiozdan.out"
#define MAXN 20005
#define MAXG 75005
long a[MAXN], s[MAXN][3];
long n, i, j, g, max, poz;
int main () {
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%ld %ld", &n, &g);
for (i=1; i<=n; i++) {
scanf("%ld", &a[i]);
}
s[0][0] = 1;
s[0][1] = 0;
s[0][1] = 0;
max = 0;
for (i=1; i<=n; i++)
for (j=max; j>=0; j--)
if (s[j][0] && (!s[j+a[i]][0] || (s[j+a[i]][0] && s[j+a[i]][1] > s[j][1]))) {
s[j+a[i]][0] = 1; s[j+a[i]][1] = s[j][1] + 1; s[j+a[i]][2] = a[i];
if (j+a[i] > max) max = j+a[i];
if (max > g - a[i+1]) max = g - a[i+1];
}
if (max>g) max = g;
for (i=max; i>=0 && (s[i][0] == 0); i--) {
}
printf("%ld ", i);
printf("%ld\n", s[i][1]);
poz = s[i][2];
/* while (poz != 0) {
printf("%ld\n", poz);
poz = s[poz][2];
}*/
return 0;
}