用的multiset,每输入一个检查一次,最后有一半WA了
#include <iostream>
#include <set>
using namespace std;
multiset<int> num;
int n,k;
long long t;
int cal(){
long long sum=0;
long long vs=0;
auto a=num.begin();
auto b=num.begin();
int i=1;
for(i;i<k;i++){
sum+=*b;
vs+=((*b)*(*b));
b++;
}
while(b!=num.end()){
sum+=*b;
vs+=((*b)*(*b));
double ave=(sum*1.0)/k;
if((vs-k*ave*ave)/k<=t)
return 1;
sum-=*a;
vs-=((*a)*(*a));
a++;
b++;
}
return 0;
}
int main(){
cin>>n>>k>>t;
int i;
for(i=1;i<=n;i++){
int p;
cin>>p;
num.insert(p);
if(i>=k){
if(cal()){
cout<<i;
break;
}
}
}
if(i>n)
cout<<"-1";
return 0;
}