Cod sursa(job #1053251)

Utilizator alexolteanuolteanu alexandru alexolteanu Data 12 decembrie 2013 16:27:21
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
using namespace std;
int max(int x, int y)
{
    if( x > y ) return x;
    else return y;
}
int main()
{
    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");
    int n,g,a[100],b[100],d[100]={0},m=0;
    fin >> n >> g;
    for( int i = 0; i < n; i++ )
        fin >> a[i] >> b[i];
    for( int i = 0; i < n; i++ )
    {
        for( int j = g; j >= 0; j-- )
        {
            if( d[j] > 0 && j + a[i] <= g && b[i] + d[j] > d[j + a[i]] ) d[j + a[i]] = b[i] + d[j];
        }
        d[a[i]]=max(d[a[i]],b[i]);
    }
    for( int i = 0; i <= g; i++)
    if( d[i] > m) m = d[i];
    fout << m;
}