小塔有n个钱包,其中第i个钱包装了ai元,他每天都会恰好使用一个钱包中的钱去购物,尽可能多地购买一种单价为k元的物品,日复一日,直到所有钱包中的钱都分别买不起此物品。
在小塔在开始日复一日地购物前,可以向任意一些钱包中再加入一些钱,但总共加入的钱数不超过m。
现在小塔想知道,如果自己以最优方案向钱包中加钱,那么最多可以购买多少件此物品。
此题实际上就是贪心加排序,想要购买到数量最多的物品,我们就要尽量让每一个钱包原本的钱不浪费,在每个钱包买完物品后会遗留一些钱x(0<=x<k),我们就将遗留的钱补足直至可以购买一个物品,则可以使钱不浪费,当然我们可支配的钱可能不够,所以要从遗留的钱更多的钱包开始不足,若能全部补足完,留下来的钱全部购买物品
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>