Cod sursa(job #1201532)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 25 iunie 2014 13:14:49
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
using namespace std;

struct elem
{
    int x,y;
};

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

const int NMAX=5005;
const int GMAX=10005;

int n,G;
elem a[NMAX];
int m1[GMAX],m2[GMAX];

inline void Citire()
{
    int i;
    fin>>n>>G;
    for (i=1;i<=n;i++) fin>>a[i].x>>a[i].y;
}

inline void Solve()
{
    int i,j;
    for (i=1;i<=n;i++)
        {
           for (j=0;j<=G;j++)
                {
                    m2[j]=0;
                    m2[j]=max(m2[j],m1[j]);
                    if (a[i].x<=j) m2[j]=max(m2[j],m1[j-a[i].x]+a[i].y);
                }
           for (j=0;j<=G;j++)
                m1[j]=m2[j];
        }
}

inline void Afisare()
{
    int i,maxim=0;
    for (i=1;i<=G;i++) maxim=max(maxim,m2[i]);
    fout<<maxim<<"\n";
}

int main()
{
    Citire();
    Solve();
    Afisare();
    return 0;
}