Cod sursa(job #1540279)

Utilizator bogdi1bogdan bancuta bogdi1 Data 2 decembrie 2015 16:04:16
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>

using namespace std;

int d[100001];

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

    int n, smax, p, gg, g, nr;
    fin >> n >> gg;

    for ( int i=1; i<=gg; i++ ) d[i] = -1;

    d[0] = 0; smax = 0;

    for ( int i=1; i<=n; i++ ) {
        fin >> g >> p;
        for ( int j=smax; j>=0; j-- )
            if ( d[j]!=-1 && j+g<=gg ) {
                if ( d[j+g] < d[j]+p )
                    d[j+g] = d[j]+p;
                if ( j+g > smax ) smax = j+g;
            }
    }

    int profit = 0;

    for ( int i=gg; i>=1; i-- )
        if ( d[i] > profit )
            profit = d[i];
    fout<< profit;
    return 0;
}