Cod sursa(job #920411)

Utilizator avaspataruAva Spataru avaspataru Data 20 martie 2013 12:47:59
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<cstdio>
using namespace std;
int i,j,n,k,max,g[5001],p[5001],profit[10001];
int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
        scanf("%d%d",&g[i],&p[i]);
    for(i=1;i<=n;i++){
        for(j=k-g[i];j>=1;j--)
            if(profit[j]!=0&&profit[j]+p[i]>profit[j+g[i]])
                profit[j+g[i]]=profit[j]+p[i];
        if(g[i]<=k&&p[i]>profit[g[i]])
            profit[g[i]]=p[i];
    }
    max=0;
    for(i=1;i<=k;i++)
        if(profit[i]>max)
            max=profit[i];
    printf("%d",max);
    return 0;
}