站外题求条
蜡烛2 查看测评数据信息 小辉有n根蜡烛,第i根蜡烛的长度是h[i]。它想知道它的n根蜡烛最多能用多少个晚上。它每天晚上需要点燃c根蜡烛。每根被点燃的蜡烛,它燃烧一个晚上会使得它的长度减少1。一旦蜡烛的长度变成0,那么该根蜡烛就用完了。如果第i个晚上小辉发现蜡烛不够用了,那么小辉最多就只能用i-1个晚上。 输出最多能用多少个晚上。
输入格式
第一行:两个整数n,c。 第二行:n个整数,第i个整数表示第i根蜡烛的长度h[i]。
输出格式
一个整数,总共最多能用多少个晚上
输入/输出例子1 输入:
3 3 2 2 2
输出:
2
样例解释
【数据范围】 50%的数据,n,c<=1000 100%的数据,n,c<=1000000,1 <= h[i] <= 1000000
本蒟蒻的代码
#include<bits/stdc++.h>
using namespace std;
int n,a[50],c;
bool cmp(int a,int b){
return a>b;
}
bool check(int k){
for(int i=1;i<=k;i++){
int o=0;
for(int j=1;j<=n;j++){
if(a[j]>0)
o++;
}
if(o<c){
return false;
}
for(int j=1,q=1;q<=c;j++){
if(a[j]>0)
a[j]--,q++;
}
sort(a+1,a+n+1,cmp);
}
return true;
}
int main(){
cin>>n>>c;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+n+1,cmp);
int l=-1,r=1000001;
while(l+1<r){
int mid=(l+r)/2;
if(check(mid))
l=mid;
else r=mid;
}
cout<<l;
return 0;
}