Pagini recente » Diferente pentru utilizator/bogdan_buzatu intre reviziile 1 si 2 | Diferente pentru problema/marioneta intre reviziile 15 si 10 | Atasamentele paginii Profil toodorik12 | Atasamentele paginii Profil cristi075 | Cod sursa (job #1768049)
#include <cstdio>
#include <algorithm>
using namespace std;
struct rucsac
{
int g,p;
};
rucsac v[5005];
bool cmp(rucsac x,rucsac y)
{
if(x.p < y.p)
return 0;
return 1;
}
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n,g,x,y,i;
scanf("%d%d", &n, &g);
for(i = 1;i <= n;i++)
{
scanf("%d%d", &x, &y);
v[i].g = x;
v[i].p = y;
}
sort(v + 1,v + n + 1,cmp);
int s = 0,pr = 0;
i = 1;
while(s <= g && i <= n)
{
s += v[i].g;
pr += v[i].p;
i++;
}
if(s > g)
{
s -= v[i - 1].g;
pr -= v[i - 1].p;
}
printf("%d",pr);
return 0;
}