为何RE?
查看原帖
为何RE?
565594
HardcoreHHK0315楼主2022/5/22 22:08
#include<bits/stdc++.h>
using namespace std;
int n,maxt,d[100001];
bool f(long long k){
	long long y=0;
	long long ans=0;
	priority_queue<long long,vector<long long>,greater<long long> >q; 
	for(int i=1;i<=k;++i){
		q.push(d[i]);
	}
	for(int i=k+1;i<=n;++i){
		ans+=q.top()-y;
		y=q.top();
		q.pop();
		q.push(d[i]+y);
		if(ans>maxt){
			return false;
		}
	}
	while(--k){
		ans+=q.top()-y;
		y=q.top();
		q.pop();
		if(ans>maxt){
			return false;
		}
		
	}
	return true; 
}
long long half(){
	long long l=0;
	long long r=100000;
	long long ans=0;
	while(l<=r){
		long long mid=(l+r)/2;
		if(f(mid)){
			ans=mid;
			r=mid-1;
		}
		else l=mid+1;
		
	}
	return ans;
}
int main(){
	scanf("%d%d",&n,&maxt);
	for(long long i=1;i<=n;++i)scanf("&d",&d[i]);
	printf("%lld",half());
	return 0; 
}
2022/5/22 22:08
加载中...