Cod sursa(job #1127995)

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