Pagini recente » Cod sursa (job #1295421) | Cod sursa (job #428926) | Cod sursa (job #1737694) | Cod sursa (job #2950139) | Cod sursa (job #2116046)
#include <fstream>
using namespace std;
ifstream fi("rucsac.in");
ofstream fo("rucsac.out");
int gr[5001],profit[5001],dp[5001][10001];
int n,g;
void af1(){for(int i=1;i<=n;i++) fo<<gr[i]<<" "<<profit[i]<<'\n';fo<<'\n';}
void af2(){for(int i=1;i<=n;i++){ for(int j=0;j<=g;j++) fo<<dp[i][j]<<" "; fo<<'\n';}}
int main()
{ fi>>n>>g;
for(int i=1;i<=n;i++) fi>>gr[i]>>profit[i];
//af1();
// for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(profit[i]>profit[j]) {swap(gr[i],gr[j]);swap(profit[i],profit[j]);}
// for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if(gr[i]>gr[j]) {swap(gr[i],gr[j]);swap(profit[i],profit[j]);}
for(int i=1;i<=n;i++) for(int j=1;j<=g;j++){
if(j<gr[i]) dp[i][j]=dp[i-1][j];
if(j>=gr[i]) dp[i][j]=max(dp[i-1][j],profit[i]+dp[i-1][j-gr[i]]);
}
//af1();
//af2();
fo<<dp[n][g];
return 0;
}