Cod sursa(job #1701827)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 14 mai 2016 11:15:05
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>

using namespace std;

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

const int nmax=5000, dmax=10000;
int v[nmax+1], d[dmax+1], c[dmax+1];

int main () {
    int n, s;
    fin>>n>>s;

    for (int i=1; i<=n; i++) {
        fin>>v[i]>>c[i];
    }
    d[0]=1;
    for (int i=1; i<=n; i++) {
        for (int j=s; j>=v[i]; j--) {
            if (d[j-v[i]]!=0 && c[i]+d[j-v[i]]>=d[j]) {
                d[j]=c[i]+d[j-v[i]];
            }
        }
    }
    int sol=0;
    for (int i=0; i<=s; i++) {
        if (d[i]>sol) {
            sol=d[i];
        }
    }
    fout<<sol-1<<"\n";
    return 0;
}