Pagini recente » Cod sursa (job #529739) | Cod sursa (job #526993) | Cod sursa (job #528755) | Cod sursa (job #2070295) | Cod sursa (job #2642957)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rucsac.in");
ofstream g("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;
f>>n>>w;
/// x->weight
/// y->profit
while(f>>x>>y)
v.push_back(make_pair(x, y));
sort(v.begin(), v.end(), comp); /// sort vector in ascending oder by weight
g<<max_profit();
f.close();
g.close();
return 0;
}