79分求助:#2 #3 #6 WA
查看原帖
79分求助:#2 #3 #6 WA
335552
Christophe_楼主2022/1/2 14:47
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const int N=1e6+5,MAX=0x3f3f3f3f3f,MIN=-MAX;
const double EPS=1e-8;
int n,m,a[N];
double c[N],sumc[N];
bool valid(double p){
	for(int i=1;i<=n;++i){
		c[i]=a[i]-p;
		sumc[i]=sumc[i-1]+c[i];
    }
    double minl=MAX;
    for(int r=m;r<=n;++r){
    	double newl=sumc[r-m];
    	minl=min(minl,newl);
    	if(sumc[r]-newl>0) return 1;
	}
	return 0;
}
int main(){
	int mina=MAX,maxa=MIN;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){ 
		scanf("%d",&a[i]);
		mina=min(mina,a[i]),maxa=max(maxa,a[i]);
    }
	double l=mina*1.0,r=maxa*1.0;
	while(r-l>=EPS){
		double mid=l+(r-l)/2;
		if(valid(mid)) l=mid;
		else r=mid;
	}
	printf("%d",(int)(r*1000));
	return 0;
}
2022/1/2 14:47
加载中...