Cod sursa(job #1742476)

Utilizator petrooPetru G petroo Data 16 august 2016 15:09:43
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#define N 5001
#define G 10001
#define max(a, b) ((a) > (b) ? (a) : (b))
int m[2][G];
int w[N],p[N];

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

    printf("%d\n",m[1 - rand][kg]);
    return 0;
}