//sb啦,忘记可以有多种答案
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const double eps=1e-6;
const int N=15009;
struct node{
double x,p;
}p[N];
int n;
double mi=50000,mx;
double cal(double x){
double ans=0;
for(int i=1;i<=n;i++)
ans+=(fabs(x-p[i].x)*p[i].p);
return ans;
// cout<<ans<<endl;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lf%lf",&p[i].x,&p[i].p);
mi=min(mi,p[i].x);
mx=max(mx,p[i].x);
}
while(fabs(mx-mi)>eps){
double lmid=(mi*2+mx)/3;
double rmid=(mi+mx*2)/3;
if(cal(lmid)<cal(rmid)) mx=rmid;
else mi=lmid;
}
printf("%.5f\n",mi);
return 0;
}
sgu114 Telecasting station 三分
最新推荐文章于 2020-03-28 22:23:05 发布