Cod sursa(job #1889134)
Utilizator | Telescu Nicolae Nicusor | Data | 22 februarie 2017 16:36:32 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <cstdio>
using namespace std;
int v[10001],maxim,maxim1;
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n,g;
scanf("%d %d\n",&n,&g);
for (int i=1;i<=n;++i)
{
int a,b;
scanf("%d %d",&a,&b);
for (int j=maxim;j>=0;--j)
if (v[j] || !j)
if (j+a<=g && v[j+a]<v[j]+b)
{
v[j+a]=v[j]+b;
if (j+a>maxim) maxim=j+a;
if (v[j+a]>maxim1) maxim1=v[j+a];
}
}
printf("%d",maxim1);
}