Cod sursa(job #1017695)

Utilizator supermitelArdelean Razvan Mitel supermitel Data 28 octombrie 2013 09:31:58
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

int G, n;
int a[10010];

void solve()
{
    int w, p, last = 0, j, nou, maxim = 0;
    scanf("%d%d", &n, &G);

    for(int i = 1; i <= G; i++)
        a[i] = -1;
    for(int i = 0; i < n; i++)
    {
        scanf("%d%d", &w, &p);
        for(j = min(last, G-w); j >=0; j--)
            if(a[j] != -1)
            {
                if(j+w > last)
                    last = j+w;
                a[j+w] = max(a[j+w], a[j] + p);
            }
    }
    for(int i = 1; i <= G; i++)
        maxim = max(maxim, a[i]);
    printf("%d\n", maxim);
}

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

    solve();

    return 0;
}