Pagini recente » Cod sursa (job #3197048) | Cod sursa (job #1980752) | Cod sursa (job #2413016) | Cod sursa (job #2964088) | Cod sursa (job #689742)
Cod sursa(job #689742)
#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[200];
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]++;
}
for (i=1; i<=200; i++){
if (!A[i]) continue;
for (k=G; k>0; k--){
if (S[k] && S[k]!=i){
for (j=1; j<=A[i] && k+j*i<=G; j++){
if (!S[k+j*i] || P[k+j*i] > P[k] + j) S[k+j*i] = i, P[k+j*i] = P[k] + j;
else break;
}
}
}
for (j=1; j<=A[i] && j*i<=G; j++) S[j*i] = i, P[j*i] = j;
}
for (i=G; !S[i]; i--);
g << i << ' ' << P[i];
}