Advertisement
dmkozyrev

390.cpp

May 20th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3.  
  4. double distance(double x1, double y1, double x2, double y2) {
  5.     y2 -= y1; x2 -= x1;
  6.     return sqrt(x2*x2+y2*y2);
  7. }
  8.  
  9. double min_distance(double x1, double y1, double x2, double y2, double xc, double yc) {
  10.     while (distance(x1, y1, x2, y2) > 1e-6) {
  11.         double x_mid = (x1+x2) / 2, y_mid = (y1+y2) / 2;
  12.         double d1 = distance(x1, y1, xc, yc);
  13.         double d2 = distance(x2, y2, xc, yc);
  14.         if (d1 < d2) {
  15.             x2 = x_mid;
  16.             y2 = y_mid;
  17.         } else {
  18.             x1 = x_mid;
  19.             y1 = y_mid;
  20.         }
  21.     }
  22.     return std::min(distance(x1, y1, xc, yc), distance(x2, y2, xc, yc));
  23. }
  24.  
  25.  
  26. int main() {
  27.     freopen("input.txt", "rt", stdin);
  28.     freopen("output.txt", "wt", stdout);
  29.    
  30.     int x1, y1, x2, y2, x3, y3, xc, yc;
  31.     scanf("%d %d %d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &xc, &yc);
  32.        
  33.     double d = min_distance(x1, y1, x2, y2, xc, yc);
  34.     d = std::min(d, min_distance(x2, y2, x3, y3, xc, yc));
  35.     d = std::min(d, min_distance(x1, y1, x3, y3, xc, yc));
  36.    
  37.     printf("%0.6lf", d);
  38.    
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement