Cod sursa(job #1359569)

Utilizator diana.albuAlbu Diana diana.albu Data 24 februarie 2015 23:37:34
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#define DMAX 10005

using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int n, G;
int dp[5005][DMAX];
int pret[DMAX], greutate[DMAX];

void citire();
void dinamic();

int main()
{
    citire();
    dinamic();
    fout << dp[n][G];
    return 0;
}

void citire()
{
    int i;
    fin >> n >> G;
    for(i = 1; i <= n; ++i)
    {
        fin >> greutate[i] >> pret[i];
    }
}

void dinamic()
{
    int i, j;
    for(i = 0; i <= n; ++i)
        dp[0][i] = 0;
    for(i = 0; i <= G; ++i)
        dp[i][0] = 0;
    for(i = 1; i <= n; ++i)
    {
        for(j = 0; j <= G; ++j)
        {
            dp[i][j] = dp[i-1][j];
            if(greutate[i] <= j && dp[i-1][j-greutate[i]] + pret[i] > dp[i][j])
                dp[i][j] = dp[i-1][j-greutate[i]] + pret[i];
        }
    }
}