昨天向果果学的,自己之前一直用qsort,好麻烦= =
#include<iostream>
#include<algorithm>
#include<memory.h>
#define MAX 3500
using namespace std;
int flag[MAX];
struct node
{
int w,d;
};
node a[MAX];
int cmp(node x, node y)
{
if(x.w==y.w) return x.d>y.d;
return x.w>y.w;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
memset(flag,0,sizeof(flag));
for(int i=0;i<n;i++)
cin>>a[i].w>>a[i].d;
//qsort(a,n,sizeof(a[0]),cmp);//先按d排序,再按w装
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
cout<<a[i].w<<" "<<a[i].d<<endl;
int cost=0;
for(int i=0;i<n;i++)
{
if(m-a[i].w>=0)
{
cost+=a[i].d;
m-=a[i].w;
flag[i]=1;
}
//cout<<m<<endl;
}
cout<<cost<<endl;
}
return 0;
}