Pagini recente » Cod sursa (job #2858365) | Cod sursa (job #409663) | Cod sursa (job #1326917) | Cod sursa (job #15442) | Cod sursa (job #2306071)
#include <fstream>
//DINAMICA UTILIZAND O MATRICE cu 2 linii, deoarece altfel nu intra in memorie
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
const int NMAX= 10000;
int dp[2][NMAX+5];
//dp[i][j]-profitul maxim pe care il poti obtine alegand i produse si a caror greutate este j
//dp[i][j]=max(dp[i][j], dp[i][j-g]+p)
int main()
{
int n, k, i, j, g, p;
fin>>k>>n;
for(i=1;i<=k;i++)
{
fin>>g>>p;
for(j=1;j<=n;j++)
{
if(j-g>=0)
dp[i%2][j]=max(dp[(i-1)%2][j], dp[(i-1)%2][j-g]+p);
}
}
fout<<dp[k%2][n]<<"\n";
return 0;
}