Cod sursa(job #1185852)

Utilizator AndreiBarbutaAndrei Barbuta AndreiBarbuta Data 17 mai 2014 08:59:39
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
#include <algorithm>
#define MAX 10005
#define MAXc 5005

using namespace std;

int d[MAX];
struct obiect{
    int w,p;
};obiect coins[MAXc];

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

    return 0;
}