Cod sursa(job #1512436)

Utilizator andreitulusAndrei andreitulus Data 28 octombrie 2015 02:13:14
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <algorithm>
#define maxn 5005
#define maxg 10005
using namespace std;

int w[maxn], p[maxn], n, g, d[3][maxg];


void read()
{
    scanf("%d %d", &n, &g);

    int i;

    for(i = 1; i <= n; i++)
        scanf("%d %d", &w[i], &p[i]);
}


void solve()
{
     int i,j;

    for(i = 1; i <= n; i++)
       for(j = 0; j <= g; j++)
       {
           d[1][j] = d[2][j];

           if(w[i] <= j)
                d[2][j] = max(d[1][j], d[1][j - w[i]] + p[i]);
       }

    printf("%d", d[2][g]);
}


int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);

    read();

    solve();

    fclose(stdin);
    fclose(stdout);

    return 0;
}