a85382078 @ 2017-09-13 21:44:33
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int f[5001];
int w[5001],c[1001];
int main()
{ int n,s,a,b,ans=0;
cin>>n>>s;
cin>>a>>b;
for(int i=0;i<n;i++)
{scanf("%d%d",&w[i],&c[i]);}
for(int i=0;i<n;i++)
{if(w[i]>a+b)
{for(int j=i;j<n;j++)
{w[j]=w[j+1];
w[j+1]=0;
c[j]=c[j+1];
c[j+1]=0;
}
n--;
}
}
sort(c,c+n);
for(int y=0;y<n;y++)
{ s-=c[y];
if(s<0) break;
ans++ ;
}
printf("%d",ans);
return 0;
}
by 青衫白叙 @ 2017-09-25 18:55:59
可以参考一下我的代码。。。
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{int h,w;}a[5001];
bool cmp(node a, node b)
{return (a.w < b.w)||(a.w == b.w && a.h < b.h);}
int n, s, x, b, ans=0;
int main() {
scanf("%d%d%d%d",&n,&s,&x,&b);b+=x;
for(int i=1; i<=n; i++) scanf("%d%d",&a[i].h,&a[i].w);
sort(a+1,a+n+1,cmp);
for(int i=1; i<=n; i++) if(a[i].h <= b ) if(a[i].w <= s) ans++,s-=a[i].w;else break;
printf("%d",ans);
return 0;
}