为啥会只输出0.0000
查看原帖
为啥会只输出0.0000
535658
xubohui112楼主2022/1/1 19:27
#include<bits/stdc++.h>
using namespace std;
long long n,l,r;//l是左指针,r是右指针 
double a[100005],b[100005],ans=0.0,nub=0.0,nua=0.0;//ans用来存答案,nub又来存b灯泡的和,nua同理 
bool cmp(double a,double b){
	return a>b;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	sort(a+1,a+n+1,cmp);//从大到小 
	sort(b+1,b+n+1,cmp);//同上 
	for(r=1;r<=n;r++){//指针右移 
		r++;
		nub+=b[r];//加b灯泡 
		ans=max(ans,min(nub-(l+r),nua-(l+r)));//比较 
		while(nua<nub&&l<n){//判断 
			nua+=a[l++];
			ans=max(ans,min(nua-(l+r),nub-(l+r)));//更改答案 
		}
	}
	printf("%.4lf",ans);//输出 
}
2022/1/1 19:27
加载中...