Cod sursa(job #920418)

Utilizator cldmeClaudiu Ion cldme Data 20 martie 2013 12:56:34
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
int const N=10001;
int const M=5001;
int g[N],p[M],profit[M];

int main()
{
    int i,j,n,k;
    in>>n>>k;
    for(i=1;i<=n;i++)
        in>>g[i]>>p[i];
    for(i=1; i<=n; i++)
    {
        for(j=k-g[i]; j>0; j--)
            if(profit[j]!=0 && profit[j]+p[i]>profit[j+g[i]])
                profit[j+g[i]] = profit[j]+p[i];
        if(g[i]<=k && p[i]>profit[g[i]])
            profit[g[i]] = p[i];
    }
    sort(&profit[1],&profit[k+1]);
    out<<profit[k];
    return 0;
}