牛牛非常喜欢赶deadline。
输入n, c, d
一共有n个任务,第i个任务需要a[i]分钟完成
特别的,在最后d分钟,牛牛的效率会变成双倍(耗时变为一半)
可能出现一个任务前半部分不在最后d分钟,后半部分在最后d分钟
那么只有在最后d分钟的后半部分效率会变为双倍。
牛牛希望在c分钟内完成的任务尽可能多,问最多可以完成多少个任务。
耗时变为一半,是不取整的,如果出现0.5,那么就是0.5。
对于100%的数据,1 <= n <= 10000, 1 <= d <= c <= 100000, 1 <= a[i] <= c。
对于40%的数据,1 <= n <= 20。
对于70%的数据,1 <= n <= 1000, 1 <= c <= 1000。
输入
输入第一行三个整数n, c, d。 接下来一行n个整数a[i]。
输出
输出一行一个整数,表示答案。
输入样例
4 10 5
8 10 1 2
输出样例
3
相当于加了d的时间
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,c,d; int s[10000]; int main() { scanf("%d%d%d",&n,&c,&d); for(int i = 0;i < n;i ++) { scanf("%d",&s[i]); } sort(s,s + n); c += d; int ans = 0; while(c - s[ans] >= 0) c -= s[ans ++]; printf("%d",ans); return 0; }