Pagini recente » Cod sursa (job #3195196) | Cod sursa (job #2965291) | Cod sursa (job #847008) | Cod sursa (job #61070) | Cod sursa (job #920487)
Cod sursa(job #920487)
#include <fstream>
#define GMAX 205
#define MAX 75005
using namespace std;
int N, G;
int V[GMAX], dp[MAX], rec[MAX];
void citire() {
ifstream in("ghiozdan.in");
in>>N>>G;
for(int i = 1, A; i <= N; i++) {
in>>A;
V[A]++;
} in.close();
}
void solve() {
dp[0] = 1;
for(int i = GMAX - 1; i; i--) {
if(!V[i]) continue;
for(int j = G - i; j >= 0; j--) {
if(!dp[j]) continue;
for(int k = 1; k <= V[i] && j + k * i <= G; k++)
if(!dp[j + k * i]) {
dp[j + k * i] = dp[j] + k;
rec[j + k * i] = i;
} else break;
}
}
}
void afisare() {
int ans;
for(ans = G; !dp[ans]; ans--);
ofstream out("ghiozdan.out");
out<<ans<<" "<<dp[ans] - 1<<"\n";
for(; ans; ans -= rec[ans])
out<<rec[ans]<<"\n";
out.close();
}
int main()
{
citire();
solve();
afisare();
return 0;
}