这题水到不想打题解。。。
直接上标:
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,K,a[100010],tot=0,ans=0;
inline int read()
{
int x=0; char c=getchar();
while (c<'0' || c>'9') c=getchar();
while (c>='0' && c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x;
}
inline int cmp(int x,int y) {return x>y;}
int main()
{
freopen("yi.in","r",stdin);
freopen("yi.out","w",stdout);
n=read(),m=read(),K=read()<<1;
if (m==0) return 0&puts("0");
for (int i=1,x,y;i<=n;i++)
{
x=read(),y=read();
if (y>=K) a[++tot]=x;
}
sort(a+1,a+tot+1,cmp);
for (int i=1;i<=tot;i++)
{
ans+=a[i];
if (ans>=m) return 0&printf("%d
",i);
}
puts("-1");
return 0;
}