Pagini recente » Cod sursa (job #1033361) | Cod sursa (job #1156028) | Cod sursa (job #873225) | Cod sursa (job #2368257) | Cod sursa (job #1870450)
#include <iostream>
#include <fstream>
#define nmax 5005
using namespace std;
int n,w[10005],pmax,i,weight,j;
int a[10005];
int p[5005];
ifstream f("rucsac.in");
ofstream g("rucsac.out");
/*void sub(int k){
int i,cost,profit;
if (k>n){
cost=0;
profit=0;
for(i=1;i<=n;i++){
if (v[i]==1) {
cost=cost+per[i].first;
profit=profit+per[i].second;
}
if (cost<=w && profit > pmax) pmax=profit;
}
return;
}
v[k]=1;
sub(k+1);
v[k]=0;
sub(k+1);
}*/
int main()
{
int act,last,greu;
f >> n >> weight;
for(j=1;j<=weight;j++) a[j]=-1;
for(i=1;i<=n;i++){
f >> w[i] >> p[i];
}
/*for(i=1;i<=n;i++){
act=i&1;
last=act^1;
for(j=1;j<=weight;j++){
a[act][j]=a[last][j];
if (j-w[i]>=0 && a[last][j-w[i]]!=-1)
a[act][j]=max(a[act][j],a[last][j-w[i]]+p[i]);
}
}*/
for(i=1;i<=n;i++){
for(j=weight;j>=1;j--){
if(j-w[i]>=0) {
a[j]=max(a[j],a[j-w[i]]+p[i]);
}
}
}
pmax=0;
for(i=1;i<=weight;i++){
if (a[i]>pmax) pmax=a[i];
}
g << pmax;
}