洛谷已AC,Virtual Judge 第一个点都没过。
代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
double a[100010];
bool code(double x){
double b1=0.0,b2=0.0;
for(int i=1;i<=n;i++){
if(a[i]<x){
b1+=x-a[i];
}else{
b2+=a[i]-x;
}
}
return b2*((100.0-k)/100.0)>=b1;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
double l=0.0,r=1000.0,mid;
while(r-l>=1e-8){
mid=(l+r)/2.0;
if(code(mid)){
l=mid+1e-8;
}else{
r=mid;
}
}
cout<<fixed<<setprecision(7)<<r<<endl;
return 0;
}