Cod sursa(job #1416283)

Utilizator antanaAntonia Boca antana Data 7 aprilie 2015 20:11:24
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>

using namespace std;
struct rucsac{int g,c;};
rucsac v[5001];
int s[10001];
int maxim(int a, int b)
{
    if(a>b)
        return a;
    return b;
}
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,i,j,G,maxi=-1;
    scanf("%d%d", &n, &G);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d", &v[i].g,&v[i].c);
        for(j=G;j>=1;j--)
            if(s[j]!=0)
                if(j+v[i].g<=G)
                    s[j+v[i].g]=maxim(s[j+v[i].g], s[j]+v[i].c);
        s[v[i].g]=maxim(s[v[i].g],v[i].c);
    }
    for(i=1;i<=G;i++)
        if(s[i]>maxi)
            maxi=s[i];
    printf("%d", maxi);
    return 0;
}