Cod sursa(job #614126)

Utilizator mytzuskyMihai Morcov mytzusky Data 5 octombrie 2011 18:22:26
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

#define N 5050

using namespace std;

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

int n,c,p[N],g[N],cost[N][N];

void citire()
{
    fin>>n;
    fin>>c;

    for(int i=0;i<n;i++)
        fin>>g[i]>>p[i];
}

void Complet_Cost()
{
    for(int j=0;j<c;j++)
        if(j==g[0] && g[0]<=c)
            cost[0][j]=p[0];

    for(int i=1;i<n;i++)
    {
        for(int j=1;j<=c;j++)
        {
            int maxx=-1;
            if(j==g[i] && g[i]<=c)
                if(maxx < p[i])
                    maxx = p[i];

            if(maxx < cost[i-1][j])
                maxx = cost[i-1][j];

            if(g[i]<j && j<=c)
                if(maxx < cost[i-1][j-g[i]] + p[i])
                    maxx = cost[i-1][j-g[i]] + p[i];

            cost[i][j]=maxx;
        }
    }

    fout << cost[n-1][c]<<"\n";
}


int main()
{
    citire();
    Complet_Cost();
    return 0;
}