Pagini recente » Cod sursa (job #1136720) | Cod sursa (job #3211336) | Cod sursa (job #1820348) | Cod sursa (job #475381) | Cod sursa (job #1166221)
#include <cstdio>
using namespace std;
struct elev{int gr,va;}t[5003];
void quick(int st,int dr)
{
int i=st,j=dr;
int pivot=t[(st+dr)/2].va;
elev aux;
do
{
while(t[i].va<pivot) i++;
while(t[j].va>pivot) j--;
if(i<=j)
{
aux=t[i];
t[i]=t[j];
t[j]=aux;i++;j--;
}
}while(i<=j);
if(i<dr) quick(i,dr);
if(j>st) quick(st,j);
}
int main()
{freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n,g;
scanf("%d%d",&n,&g);
int ng=0;
for(int i=1;i<=n;i++) scanf("%d%d",&t[i].gr,&t[i].va);
quick(1,n);
int poz=n,val=0;
while(ng<g)
{
if(ng+t[poz].gr<=g)
{
ng=ng+t[poz].gr;
val+=t[poz].va;
}
poz--;
}
printf("%d",val);
}