Cod sursa(job #1417837)
Utilizator | Data | 11 aprilie 2015 11:04:32 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.65 kb |
#include <cstdio>
#include <algorithm>
using namespace std;
int d[10001];
int main() {
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int smax=0,n,gr,g,p;
d[0]=0;
scanf("%d%d",&n,&gr);
for(int i=1; i<=n; i++) {
scanf("%d%d",&g,&p);
for(int j=smax; j>=0; j--)
if(d[j] && j+g<=gr && d[j]+p>d[j+g]) {
d[j+g]=d[j]+p;
smax=max(j+g,smax);
}
if(g<=gr&&p>d[g]) {
d[g]=p;
smax=max(smax,g);
}
}
int maxim=-1;
for(int i=1;i<=smax;i++)
maxim=max(maxim,d[i]);
printf("%d",maxim);
return 0;
}