Pagini recente » Cod sursa (job #663898) | Cod sursa (job #851758) | Cod sursa (job #401955) | Cod sursa (job #471942) | Cod sursa (job #2699429)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int n, w;
vector<pair<int, int>> v;
vector<int> prv, crt;
int **a;
bool comp (pair<int, int> a, pair<int, int> b)
{
return a.first<b.first;
}
int max_profit()
{
prv.resize(w+1, 0);
crt.resize(w+1, 0);
int k=0;
while(k<n)
{
for(int i=1; i<v[k].first; i++)
crt[i]=prv[i];
for(int i=v[k].first; i<=w; i++)
crt[i]=max(prv[i], v[k].second+prv[i-v[k].first]);
prv=crt;
k++;
}
return prv[w];
}
int main()
{
int x, y;
in>>n>>w;
while(in>>x>>y)
v.push_back(make_pair(x, y));
sort(v.begin(), v.end(), comp);
out<<max_profit();
}