Cod sursa(job #1796570)

Utilizator miki4Dragomir Mihai miki4 Data 3 noiembrie 2016 16:49:22
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>

using namespace std;
ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");

int r[10010];
int g[5010], p[5010];
int n, s, i, j;

// r[i] = profitul maxim sa obtin suma i

int main () {
    fin>>n>>s;
    for (i=1;i<=n;i++)
        fin>>g[i]>>p[i];

    r[0] = 1;
    for (i=1;i<=n;i++) {
        for (j=s;j>=1;j--)
            if (r[j] != 0 && j+g[i] <= s)
                r[ j+g[i] ] = max (r[j + g[i] ], r[j] + p[i]);
        r[g[i]] = max( r[ g[i] ], p[i] );
    }
    int sol = 0;
    for (i=1;i<=s;i++)
        sol = max(sol, r[i]);
    fout<<sol;
}