Cod sursa(job #2845188)
| Utilizator | Data | 7 februarie 2022 16:53:23 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.67 kb |
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int dp[2][10005],gr[10005],profit[10005];
int main()
{
int n,g;
cin>>n>>g;
for(int i=1;i<=n;i++)
{
cin>>gr[i]>>profit[i];
}
dp[1][0]=0;
dp[0][0]=0;
dp[1][gr[1]]=profit[1];
for(int i=1;i<=n;i++)
{
for(int j=0;j<=g;j++)
{
if(j-gr[i]<0)
{
dp[i%2][j]=dp[(i-1)%2][j];
}
else
{
dp[i%2][j]=max(dp[(i-1)%2][j],dp[(i-1)%2][j-gr[i]]+profit[i]);
}
}
}
cout<<dp[n%2][g];
return 0;
}
