测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27738. 采摘苹果秋天到了,国豪家院子里的苹果树结了 n 个果子。国豪准备采摘这些苹果。他有一个 a 厘米高的椅子,当他手够不着时,他会站到椅子上再试试。当然,摘苹果不仅需要能够到,还需要消耗一定的体力值。国豪初始的体力值为 s。如果椅子的高度 a 再加上他手伸直的最大长度 b 大于等于第 i 个苹果的高度 xi,并且国豪目前现有的体力值大于等于摘第 i 个苹果消耗的体力值 yi 时,就认定国豪能够摘到这…

填空题 中等

题目描述

采摘苹果

秋天到了,国豪家院子里的苹果树结了 n 个果子。国豪准备采摘这些苹果。他有一个 a 厘米高的椅子,当他手够不着时,他会站到椅子上再试试。当然,摘苹果不仅需要能够到,还需要消耗一定的体力值。国豪初始的体力值为 s。如果椅子的高度 a 再加上他手伸直的最大长度 b 大于等于第 i 个苹果的高度 xi,并且国豪目前现有的体力值大于等于摘第 i 个苹果消耗的体力值 yi 时,就认定国豪能够摘到这个苹果。请你编程统计国豪一共能摘到多少个苹果。

输入

共 n+2 行。第 1 行,两个正整数 n 和 s。第 2 行,两个正整数 a 和 b。

接下来的 n 行,每行两个正整数 xi 和 yi。

输出

共一行,一个整数,表示国豪最多能摘到的苹果数。

样例输入

4 10 20 140

150 4

170 2

130 5

155 3

样例输出

2

说明

一共有 4 个苹果。国豪初始的体力值为 10。国豪能摘到苹果的最大高度为 160。第 2 个苹果超过了 160,国豪摘不到。剩下的 3 个苹果,虽然都能摘到,但他的体力值只能保证他摘 2 个。

数据范围

n<=5000,a<=50,b<=200,s<=1000,xi<=280,yi<=100

参考答案

#include<bits/stdc++.h> using namespace std; int n,s,a,b,ab,sum; struct apple { int xi,yi; }t[5001]; bool cmp(apple x,apple y) { return x.yi<y.yi; } int main() { cin>>n>>s>>a>>b; ab=a+b; for(int i=1;i<=n;i++) cin>>t[i].xi>>t[i].yi; stable_sort(t+1,t+1+n,cmp); for(int i=1;i<=n;i++) { if(t[i].xi<=ab&&t[i].yi<=s) { s=s-t[i].yi; sum++; } if(s<=0) break; } cout<<sum; return 0; }
上一题 下一题