Cod sursa(job #1701792)
Utilizator | Data | 14 mai 2016 08:17:02 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 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[s-v[i]]>=d[i]) {
d[j]=c[i]+d[j-v[i]];
}
}
}
while (d[s]==0) {
s--;
}
fout<<d[s]-2<<"\n";
return 0;
}