Cod sursa(job #1549040)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 11 decembrie 2015 20:47:24
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <cstdio>
using namespace std;

const int N_max = 5000;
const int G_max = 10000;

int profit[G_max+1];
int g[N_max+1], p[G_max+1];

int N,G;
int Profit_Max;

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

    int i, j;

    scanf("%d %d", &N, &G);
    for(i = 1; i <= N; i++) scanf("%d %d", &g[i], &p[i]);

    for(i = 1; i <= G; i++) profit[i] = -1;
    profit[0] = 0;

    for(i = 1; i <= N; i++)
        for(j = G; j >= g[i]; j--)
            if(profit[j] < profit[j - g[i]] + p[i] && profit[j - g[i]] != -1)
            {
                profit[j] = profit[j - g[i]] + p[i];
                if(Profit_Max < profit[j]) Profit_Max = profit[j];
            }

    printf("%d", Profit_Max);

    return 0;
}