题解
- 水题一道
- 我们先把可以来回的飞船弄出来,然后排序,从大到小做就好了
代码
1 #include<cstdio>
2 #include<algorithm>
3 #define ll long long
4 using namespace std;
5 ll n,m,cnt,ans,g,l[100010],k;
6 int main()
7 {
8 scanf("%lld%lld%lld",&n,&m,&k);
9 for (ll i=1,x,y;i<=n;i++) { scanf("%lld%lld",&x,&y); if (y>=(2*k)) l[++cnt]=x; }
10 sort(l+1,l+cnt+1);
11 for (ll i=cnt;i>=1;i--) if (g+l[i]<m) g+=l[i],ans++; else { g+=l[i]; ans++; break; }
12 if (g>=m) printf("%lld",ans); else printf("-1");
13 }