Untitled
unknown
plain_text
2 years ago
1.3 kB
11
Indexable
#include<iostream>
using namespace std;
int coor[11],m[11];
int t,n;
double result;
double abs(double x, double y){
return (x>y)? (x-y) : (y-x);
}
int compare(int st,int end, double curpoint){
double totalleft=0; double totalright=0;
for(int i=st;i>=1;i--){
totalleft+= m[i]/((curpoint-coor[i])*(curpoint-coor[i]));
}
for(int i=end;i<=n;i++){
totalright+= m[i]/((curpoint-coor[i])*(curpoint-coor[i]));
}
if(abs(totalleft,totalright)<=0.000000001) return 0;
return (totalleft<totalright)? -1 : 1;
}
double findpointofbalance(int st, int end, double left, double right){
double center=(left+right)/2;
int check=compare(st,end,center);
if(check==0){
return center;
}
else if(check==1){
return findpointofbalance(st,end,center,right);
}
else{
return findpointofbalance(st,end,left,center);
}
}
int main(){
//freopen("input.txt","r",stdin);
for(int tc=1;tc<=10;tc++){
cin >> n;
for(int i=1;i<=n;i++) cin >> coor[i];
for(int i=1;i<=n;i++) cin >> m[i];
cout << "#" << tc << " " ;
for(int i=1;i<n;i++){
result=findpointofbalance(i,i+1,coor[i],coor[i+1]);
cout << fixed;
cout.precision(10);
cout << result << " ";
}
cout << endl;
}
return 0;
}Editor is loading...
Leave a Comment