Cod sursa(job #1083579)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 16 ianuarie 2014 08:29:16
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <cstring>
using namespace std;

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

int n, s;
int maxim;
int g[5001], v[5001];
int q[10001];

int main()
{
    is >> n >> s;
    for ( int i = 1; i <= n; ++i )
        is >> g[i] >> v[i];
    memset(q, -1, 10001);
    q[0] = 0;
    for ( int i = 1; i <= n; ++i )
        for ( int j = s; j > -1; --j )
            if ( q[j] != -1 && q[j] + v[i] > q[j + g[i]] )
                q[j + g[i]] = q[j] + v[i];
    for ( int i = s; i > -1; --i )
        if ( q[i] > maxim )
            maxim = q[i];
    os << maxim;
    is.close();
    os.close();
    return 0;
}

/*
for ( int j = suma + g[i]; j >= g[i]; --j )
            if ( q[j - g[i]] != -1 && q[j - g[i]] + v[i] > q[j] )
               q[j] = q[j - g[i]] + v[i];
*/