Cod sursa(job #1105583)
Utilizator | Data | 11 februarie 2014 21:32:57 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <fstream>
#define NMAX 10005
using namespace std;
FILE* f=freopen("rucsac.in","r",stdin);
FILE* o=freopen("rucsac.out","w",stdout);
int n,k;
int d[NMAX];
int w[5005],p[5005];
inline int maxim(int a, int b)
{
return (a>b)?a:b;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
{
int x,y;
scanf("%d%d",&x,&y);
w[i]=x;
p[i]=y;
}
for(int j=1;j<=n;++j)
for(int i=k;i>0;--i)
if(i-w[j]>=0)
d[i]=maxim(d[i],d[i-w[j]]+p[j]);
printf("%d",d[k]);
return 0;
}