Pagini recente » Cod sursa (job #934273) | Cod sursa (job #2639925) | infoarena 2.0 | Cod sursa (job #456234) | Cod sursa (job #2845316)
#include<fstream>
#include<iostream>
#include<climits>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
//ifstream f("in.in");
//ofstream g("out.out");
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int d[10005],p[5005],v[5005];
int indiceMaxim = 0,n,G;
int main()
{
f>>n>>G;
d[0]=0;
for(int i=1;i<=G;i++)
d[i]=-1;
for(int i=1;i<=n;i++){
f>>v[i]>>p[i];
}
for(int i=1;i<=n;i++){
for(int j=indiceMaxim;j>=0;j--){
if(d[j]!=-1){
if(v[i]+j<=G){
if(d[j+v[i]]<d[j]+p[i]){
d[j+v[i]] = d[j]+p[i];
indiceMaxim = max(indiceMaxim,j+v[i]);
}
}
}
}
}
int sol=-1;
while(indiceMaxim>0)
{
sol = max(sol,d[indiceMaxim]);
indiceMaxim--;
}
g<<sol;
f.close();
g.close();
return 0;
}