Pagini recente » Cod sursa (job #1172989) | Monitorul de evaluare | Cod sursa (job #1063397) | Cod sursa (job #2059244) | Cod sursa (job #2102614)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int W[50], P[50];//greutatea si castigul fiecarui obiect
int D[50][100];
//D[i][j] cel mai bun castig pentru primele i obiecte avand greutatea insumata j
int main()
{
int N,G;
fin>>N>>G;
for (int i = 1; i <= N; ++i)
{
fin>>W[i]>>P[i];
}
//CASTIGUL MAXIM OBTINUT
for( int j = G; j >= 0;j--)
D[0][j]=0;
for( int i = 1; i <= N; i++)
D[i][0]=0;
for( int i = 1; i <= N; i++)
for( int j =0; j<= G;j++)
if(W[i]>j)
D[i][j]=D[i-1][j];
else
if( D[i-1][j] < D[i-1][j-W[i]] + P[i] )
D[i][j] = D[i-1][j-W[i]] + P[i];//adaug obiectul i
else
D[i][j]=D[i-1][j];//nu adaug obiectul i
fout<<D[N][G];
return 0;
}