Cod sursa(job #1007965)

Utilizator cristianalex81Cristian Alexandru cristianalex81 Data 9 octombrie 2013 22:22:02
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#define dimn 5005
#define dimg 10005

using namespace std;

int m[dimn][dimg],n,g;
int a[dimn][2]; //weight and profit

int main()
{
    ifstream cin("rucsac.in");
    ofstream cout("rucsac.out");

    cin >>n >>g;
    for (int i=1;i<=n;i++)
        cin >>a[i][0]>>a[i][1];

    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=g;j++)
        {
            if ((j-a[i][0])>=0) //we can add this object
            {
                int p = m[i-1][j-a[i][0]] + a[i][1]; //new profit
                if (m[i-1][j] < p )
                    m[i][j] = p;
                else
                    m[i][j] = m[i-1][j];
            }
            else
                m[i][j] = m[i-1][j];
        }
    }
    int max = 0;
    for (int j=1;j<=g;j++)
    {
        if (m[n][j]>max)
            max = m[n][j];
    }
    cout<<max<<endl;
    return 0;
}