Pagini recente » Cod sursa (job #2170234) | Cod sursa (job #898219) | Istoria paginii runda/asem-info/clasament | Cod sursa (job #66673) | Cod sursa (job #1112159)
#include<fstream>
#include<vector>
#define NMAX 205
#define GMAX 75005
#define Min min(j/i,v[i])
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
struct obiect
{
int greutate,nr,valmax;
obiect()
{
greutate=nr=valmax=0;
}
}DP[GMAX];
int n,g,v[NMAX];
vector<int> sol;
int main()
{
fin>>n>>g;
for(int i=1,x;i<=n;i++)
{
fin>>x;
v[x]++;
}
for(int i=1;i<=200;i++)
{
if(!v[i])
continue;
for(int j=g;j>=0;j--)
{
if(DP[j-Min*i].greutate+Min*i==DP[j].greutate)
DP[j].nr=min(DP[j].nr,DP[j-Min*i].nr+Min);
if(DP[j-Min*i].greutate+Min*i>DP[j].greutate)
{
DP[j]=DP[j-Min*i];
DP[j].greutate+=Min*i;
DP[j].nr+=Min;
DP[j].valmax=i;
}
}
}
fout<<DP[g].greutate<<' '<<DP[g].nr<<'\n';
return 0;
}