Cod sursa(job #1098436)

Utilizator xtreme77Patrick Sava xtreme77 Data 4 februarie 2014 20:19:01
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>
#define MAX 5050
#define MAXX 10000

using namespace std;
struct rucsac{
    int gr,pr;
}q[MAX];
int maxim(int a,int b);
int n,k,d[MAXX],i,j,max,aux;
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",&q[i].gr,&q[i].pr);
    for(i=1;i<=k;++i)d[i]=-1;
    d[0]=0;
    for(j=1;j<=n;++j)
        for(i=k;i>=0;--i)
        {
            if(d[i]>=0){
                aux=d[i]+q[j].pr;
                if(i+q[j].gr<=k){
                d[i+q[j].gr]=maxim(d[i+q[j].gr],aux);
                if(d[i+q[j].gr]>max)max=d[i+q[j].gr];
                }
            }
            if(d[i]>max)max=d[i];
        }
    printf("%d\n",max);

    return 0;
}
int maxim(int a,int b)
{
    if(a>b)return a;
    return b;
}