fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. double t;
  5. #define err 0.0000001
  6. vector<pair<double,double> > seg;
  7. double co;
  8. bool ok(double ans)
  9. {
  10. co=0.0;
  11. for(int i=0; i<n; i++)
  12. {
  13. if((ans+seg[i].second)<=0) return false;
  14. co+=(seg[i].first)/(ans+seg[i].second);
  15. }
  16.  
  17. if(abs(co-t)<=err) return true;
  18. else return false;
  19.  
  20. }
  21. int main()
  22. {
  23.  
  24. cin>>n>>t;
  25. double x,y;
  26. for(int i=0; i<n; i++)
  27. {
  28. cin>>x>>y;
  29. seg.push_back(make_pair(x,y));
  30. }
  31. double low=-1000.0,hi=1000.0;
  32. double mid=(hi+low)/2.0;
  33.  
  34. while(!ok(mid))
  35. {
  36. // cout<<mid<<" "<<co<<endl;
  37. if(abs(co-0)<=err)
  38. {
  39. low=mid;
  40. }
  41. else if(co<t)
  42. {
  43. hi=mid;
  44. }
  45. else if(co>t)
  46. {
  47. low=mid;
  48. }
  49. mid=(hi+low)/2.0;
  50. }
  51. // ok(-0.408653377);
  52. printf("%.6f\n",mid);
  53.  
  54. }
  55.  
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
0.000000