题目解析:
要求小Y最低多少名,即求最多有多少人的总分比小Y高,其中DAY1+DAY2的分数可以随意组合
思路:
cnt储存总分比小Y高的最多人数,a和b数组储存DAY1和DAY2的分数。
输入后用sort将DAY1分数降序排列,DAY2分数升序排列,以此遍历还未组合过的的最大值和最小值
将DAY1的最高分,与DAY2的最低分遍历,i和j作为a b数组的遍历指针
若总分大于小Y的总分S,则将这一对分数视作下一名(若第一次大于S则为第一名),此时cnt++;
否则与DAY2第二小的分数比较,以此类推。
以上两行通过while实现,在满足第一种情况后即可寻找剩余DAY1分数的最大分数与DAY2分数,
因为a数组递减,b数组递增,所以不存在更小的DAY2分数与当前的DAY1分数可以超过s。
注意:
正整数总分最大值为4×10^9,所以可以用无符号整形unsigned int储存
别忘了最后输出时要将cnt加1,因为还要算上小Y自己,这样就AC了