75分求调
查看原帖
75分求调
1304256
xy_mc楼主2025/1/25 16:32

WA on #7#8#9#10#18

#include<bits/stdc++.h>
#define inl inline
#define reg register
#define int long long
#define fst ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rep(i,x,y) for(reg int i=x;i<=(y);++i)
#define per(i,x,y) for(reg int i=x;i>=(y);--i)
using namespace std;
const int N=1e5+5;
int n,k,t,a[N],sum_s[N],sum[N],v[N]; 
bool check(int x){
	rep(i,1,x) v[i]=a[i];
	sort(v+1,v+x+1);
	rep(i,1,x){
		sum_s[i]=sum_s[i-1]+v[i]*v[i];
		sum[i]=sum[i-1]+v[i];
	}
	double ans=DBL_MAX;
	rep(i,k,x){
		double sum1=sum_s[i]-sum_s[i-k-1];
		double sum2=2*(1.0*sum[i]-sum[i-k-1])*((1.0*sum[i]-sum[i-k-1])/k);
		double sum3=((1.0*sum[i]-sum[i-k-1])/k)*((1.0*sum[i]-sum[i-k-1])/k)*k;
		ans=min(ans,(sum1-sum2+sum3)/k);
	}	
	return ans<t;
}
signed main(){
	fst;
	cin>>n>>k>>t;
	rep(i,1,n){
		cin>>a[i];
	}
	int l=k,r=n,ans=-1;
	while(l<=r){
		int mid=(l+r)>>1;
		if(check(mid)){
			r=mid-1;
			ans=mid;
		}else{
			l=mid+1;
		}
	}
	cout<<ans;
	return 0;
}
2025/1/25 16:32
加载中...