样例没过,还有90pts……(萌新不知道如何处理<=t)
查看原帖
样例没过,还有90pts……(萌新不知道如何处理<=t)
658786
STUDENT00楼主2022/9/2 18:24

Code:

#include<bits/stdc++.h>
using namespace std;
int n,s,t,a[100010];
double l=-1e9,r=1e9,mid,b[100010],sum[100010];
bool check(double k){
	for(int i=1;i<=n;i++) b[i]=a[i]-k;
	double mins=0;
	for(int i=1;i<=n;i++){
		sum[i]=sum[i-1]+b[i];
		if(i>=s){
			mins=min(mins,sum[i-s]);
			if(sum[i]>mins) return 1;
		}
	}
	return 0;
}
int main(){
	scanf("%d%d%d",&n,&s,&t);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	mid=(l+r)/2;
	while(r-l>1e-4){
		if(check(mid)) l=mid;
		else r=mid;
		mid=(l+r)/2;
	}
	printf("%.3lf",mid);
	return 0;
}
2022/9/2 18:24
加载中...