Cod sursa(job #1128012)

Utilizator c0rn1Goran Cornel c0rn1 Data 27 februarie 2014 14:47:34
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#define max(x,y) ((x)>(y)?(x):(y))
using namespace std;
FILE *f1=freopen("rucsac.in", "r", stdin);
FILE *f2=freopen("rucsac.out", "w", stdout);
int n, g, w, p, a[10001], maxi;   /// a[greutate]=profitmax
int main()
{
    scanf("%d %d", &n, &g);
    while(n--)
    {
        scanf("%d %d", &w, &p);
        for (int i=g; i>=1; i--)
            if (a[i] && i+w<=g)
                a[i+w]=max(a[i+w], a[i]+p);
        a[w]=max(p, a[w]);
    }
    for (int i=0; i<=g; i++)
        maxi=max(maxi, a[i]);
    printf("%d", maxi);
    return 0;
}