Pagini recente » Cod sursa (job #1452817) | Cod sursa (job #1423257) | Cod sursa (job #2691278) | Cod sursa (job #1861513) | Cod sursa (job #2859623)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n, g;
int greutati[20001];
int dp[75001];
int nr_obiecte[75001];
bool comp(int a, int b)
{
if(a > b)
return true;
return false;
}
void citire()
{
fin >> n >> g;
for(int i = 0; i < n; ++i)
fin >> greutati[i];
}
void rezolvare()
{
for(int i = 1; i <= n; ++i)
for(int j = g; j > 0 && j - greutati[i] >= 0; --j)
{
if(dp[j] < dp[j - greutati[i]] + greutati[i])
{
dp[j] = dp[j - greutati[i]] + greutati[i];
nr_obiecte[j]++;
//cout << i << ' ' << j << ' ' << greutati<< '\n';
}
}
fout << dp[g] << ' ' << nr_obiecte[g];
}
int main()
{
citire();
sort(greutati + 1, greutati + n + 1, comp);
// for(int i = 0; i < n; ++i)
// cout << greutati[i] << ' ';
rezolvare();
return 0;
}