Advertisement
Hasan1026

House Land

Jan 12th, 2021
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include <iostream>
  3. #include <cmath>
  4. #include<string>
  5. #include<cstdbool>
  6. using namespace std;
  7. void solve ();
  8. double h, l, r, k;
  9. double t(double h, double l, double r, double k );
  10. double le (double h, double l, double r, double k);
  11. double ts(double z, double r);
  12. int main()
  13. {
  14.     int t = 1;
  15.     //cin >> t; //x=t;
  16.     while (cin >> h >> l >> r >> k) {
  17.         if (h || l || r || k)
  18.             solve();
  19.     }
  20.     return 0;
  21. }
  22.  
  23. void solve() {
  24.  
  25.     double ans = ts (0, r);
  26.     cout << fixed << setprecision(2) << ans  << endl;
  27.  
  28. }
  29.  
  30. double t(double i ) {
  31.     return (sqrt(h * h + i * i) + k * sqrt(l * l + (r - i) * (r - i)));
  32. }
  33. double le (double i) {
  34.     return (double)sqrt(h * h + i * i) + (double) sqrt(l * l + (r - i) * (r - i));
  35. }
  36. double ts(double z, double r) {
  37.     double low = z;
  38.     double high = r;
  39.     double mid1 = low + (r - z) / 3.0;
  40.     double mid2 = high - (r - z) / 3.0;
  41.     double tmid2 = t(mid2);
  42.     double tmid1 = t(mid1);
  43.     if (high -low <= 0.0000001) {
  44.         //cerr << (mid2);
  45.         return le (mid2);
  46.     }
  47.     else if (tmid2 > tmid1) {
  48.         return ts( low, mid2);
  49.     }
  50.     else if (tmid2 < tmid1) {
  51.         return ts(mid1, high);
  52.     }
  53.  
  54.  
  55. }
  56.  
  57.  
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement