这段代码我自己测是能过的,但是提交上去全read0 WA,求救大佬们
#include<bits/stdc++.h>
using namespace std;
int ans,n,t;
priority_queue<int> p;
bool chk(int k){
int tmp=0;
vector<int> v;
priority_queue<int> q=p;
for(int i=1;i<=k;i++){
int num=q.top();
q.pop();
v.insert(lower_bound(v.begin(),v.end(),num,greater<int>()),num);
}
while(!v.empty()){
int les=v[v.size()-1];
tmp+=les;
for(int i=0;i<(int)v.size();i++){
v[i]-=les;
}
while(v.back()==0){
v.pop_back();
if(!q.empty()){
int num=q.top();
q.pop();
v.insert(lower_bound(v.begin(),v.end(),num,greater<int>()),num);
}
}
if(tmp>t) {
return false;
}
}
return true;
}
int main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
int tmp;
cin>>tmp;
p.push(tmp);
}
int l=0;
int r=n;
while(l<=r){
int mid=(l+r)/2;
if(chk(mid)){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}