Pagini recente » Cod sursa (job #1072891) | Cod sursa (job #249949) | Cod sursa (job #1781666) | Monitorul de evaluare | Cod sursa (job #1782648)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int gmax,n;
int v,g;
int val[10005];
int main()
{
//a[i][j] - greutatea optima care se poate obtine
// cu greutatea j din primele i obiecte
//a[i][j] = MAX(a[i-1][j], v+a[i-1][j-g])
//citeste gmax si numarul de obiecte
in>>n>>gmax;
//initializeaza vectorul de valori
for(int i=0;i<=gmax;++i)
val[i]=-1;
for(int k=1;k<=n;++k)
{
in>>g>>v;
int j=gmax;
while(j-g>=0)
{
if(j==g)
{
if(v > val[j])
val[j] = v;
}
else if(val[j-g]>-1)
{
if(v+val[j-g] > val[j])
val[j] = v+val[j-g];
}
--j;
}
}
//afiseaza maximul
int mx=val[0];
for(int i=1;i<=gmax;++i)
if(mx<val[i])
mx=val[i];
out<<mx<<"\n";
return 0;
}