Pagini recente » Cod sursa (job #2843895) | Cod sursa (job #936880) | Cod sursa (job #3257166) | Cod sursa (job #2355424) | Cod sursa (job #1540445)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,g,i,s1,s2,g1,g2;
struct cell
{
int w,p;
}v[5010],vv[5010];
bool f1(cell a, cell b)
{
if(a.w!=b.w)
return a.w<b.w;
return a.p>b.p;
}
bool f2(cell a, cell b)
{
if(a.p!=b.p)
return a.p>b.p;
return a.w<b.w;
}
int main()
{
fin>>n>>g;
for(i=0;i<n;i++)
{
fin>>v[i].w>>v[i].p;
vv[i].w=v[i].w;
vv[i].p=v[i].p;
}
sort(v,v+n,f1);
sort(vv,vv+n,f2);
for(i=0;i<n && g1+v[i].w<=g;i++)
{
g1+=v[i].w;
s1+=v[i].p;
}
for(i=0;i<n && g2+vv[i].w<=g;i++)
{
g2+=vv[i].w;
s2+=vv[i].p;
}
fout<<max(s1,s2);
fin.close();
fout.close();
return 0;
}