正题
题目大意
一些飞船,选最少的,使得可以载所有乘客来回两次
解题思路
因为代价都是一样的,选载客最多可以往返两次的就好了。
codecodecode
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100010;
struct node{int peo,dis;
}a[N];
int n,m,k,ans;
bool cmp(node x,node y)
{return x.peo>y.peo;}
int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++)scanf("%d%d",&a[i].peo,&a[i].dis);sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(a[i].dis<k*2) continue;m-=a[i].peo;ans++;if(m<=0) break;}if(m<=0) printf("%d",ans);else printf("-1");
}