题目传送门:https://codeforces.com/problemset/problem/378/D
题目大意:
有 \(n\) 个人,\(m\) 个bug,已经总资金\(s\)
第\(i\)个bug的难度为\(a_i\),第\(i\)个人的能力值为\(b_i\),其需要的工资为\(c_i\)
支付工资\(c_i\)后,第\(i\)个人就可以每天处理一个难度不超过\(b_i\)的bug,持续时间无限
问能否选出一些人处理这些bug?如果能,输出所需的最少天数\(d\),以及每个bug是由谁处理的
考虑二分天数,如果需要花费\(d\)天解决问题,我们就尽可能让所有人都工作\(d\)天,至少能力越强的人,越应当工作\(d\)天
故判断天数\(d\)是否可行时,我们在剩余的bug中找到最难的一个\(k\),选取能力值\(b_i\geqslant a_k\)中\(c_i\)最小的一个,然后除去\(d\)个bug,以此类推直到bug处理完毕
将能力值作为下标,转化为线段树维护
注:同一能力值的人有多个
/*program from Wolfycz*/
#include