Pagini recente » Cod sursa (job #1862017) | Monitorul de evaluare | Borderou de evaluare (job #1995639) | Cod sursa (job #536709) | Cod sursa (job #3340792)
#include <fstream>
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
ifstream fin("rucsac.in");
ofstream gout("rucsac.out");
struct str
{
int g,v;
};
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0);gout.tie(0);
int n,g,i,j;
fin>>n>>g;
vector<str>v(n);
for(i=0; i<n; ++i)fin>>v[i].g>>v[i].v;
sort(v.begin(),v.end(),[](const str&s1,const str&s2)->bool
{
return s1.v*s2.g<s2.v*s1.g;
});
vector<int>ans(g+1);
for(i=0; i<n; ++i)
for(j=g; j>=v[i].g; --j)
ans[j]=max(ans[j],v[i].v+ans[j-v[i].g]);
gout<<ans[g];
return 0;
}