Cod sursa(job #920420)

Utilizator XeBluePodaru Mihai XeBlue Data 20 martie 2013 12:57:40
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

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

const int N = 10001;

long long n, i, f, profit[N], g[N], p[N], solutie, k;

void citire();
void rezolvare();
void afisare();

int main()
{
    citire();
    rezolvare();
    afisare();

    in.close();
    out.close();
    return 0;
}

void citire()
{
    in >> n >> k;
    for(i=1;i<=n;i++)
        in >> g[i] >> p[i];
}

void rezolvare()
{
    for(i=1;i<=n;i++)
    {
        for(int j=k-g[i];j>=1;j--)
        {
            if(profit[j]!=0 && profit[j]+p[i]>profit[j+g[i]])
                profit[j+g[i]]=profit[j]+p[i];
            if(profit[j+g[i]]>solutie)
                solutie=profit[j+g[i]];
        }
        if(g[i]<=k && p[i]>profit[g[i]])
            profit[g[i]]=p[i];
        if(profit[g[i]]>solutie)
            solutie=profit[g[i]];
    }
}

void afisare() { out << solutie ;}