Pagini recente » Cod sursa (job #799764) | Cod sursa (job #112330) | Cod sursa (job #462889) | Cod sursa (job #1422545) | Cod sursa (job #2837584)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int dp[1001][10001],n,gmax;
vector<pair<int,int>> el; // pair<pret, greutate>
void afisare_dp()
{
for(int i=1;i<=n;i++){
for(int j=1;j<=gmax;j++)
cout<<dp[i][j]<<' ';
cout<<'\n';
}
}
int main()
{
//citire
fin>>n>>gmax;
el.resize(n+1);
for(int i=1;i<=n;i++)
fin>>el[i].second>>el[i].first;
//fin>>el[i].first>>el[i].second; //daca primul element din pair era pretul
for(int i=1;i<=n;i++)
{
int pret = el[i].first;
int greutate = el[i].second;
for(int cap=1;cap<=gmax; cap++)
{
dp[i][cap] = dp[i-1][cap];
if(cap - greutate >= 0)
dp[i][cap] = max(dp[i][cap], dp[i-1][cap- greutate] + pret);
}
}
int sol = 0;
for(auto el:dp[n])
sol = max(sol,el);
fout<<sol;
//afisare_dp();
return 0;
}