Cod sursa(job #2295709)

Utilizator anav23Ana Vasiliu anav23 Data 3 decembrie 2018 21:42:04
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
#define DIM 10005
using namespace std;

int n,g,w[DIM],p[DIM],dp[DIM];

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d",&n,&g);
    for(int i=1;i<=n;i++)
        scanf("%d%d",&w[i],&p[i]);
    for(int i=1;i<=n;i++) {
        for(int j=g;j>w[i];j--)
            if((dp[j-w[i]]+p[i]>dp[j])&&dp[j-w[i]]!=0)
                dp[j]=dp[j-w[i]]+p[i];
        if(dp[w[i]]<p[i])
            dp[w[i]]=p[i];
    }
    int maxim=0;
    for(int i=1;i<=g;i++)
        if(dp[i]>maxim)
            maxim=dp[i];
    printf("%d",maxim);
    return 0;
}