fork download
  1. #include <iostream>
  2. #include <cmath> //подключаем для возможности извлечения корня
  3. #include <iomanip> //подключаем, чтобы округлить до определенного количества знаков
  4. using namespace std;
  5.  
  6. double distance(long long X1, long long Y1, long long X2, long long Y2)
  7. {
  8. return sqrt((X1-X2)*(X1-X2) + (Y1-Y2)*(Y1-Y2));
  9. }
  10. int main() {
  11. long long A, B, C, X1, X2, Y1, Y2, Z2;
  12. double S = 1000000000;
  13. cin >> A >> B >> C >> X1 >> Y1 >> X2 >> Y2 >> Z2;
  14. if (Z2 == 0)
  15. {
  16. S = distance(X1, Y1, X2, Y2);
  17. }
  18. else
  19. {
  20. if (X2 == 0)
  21. {
  22. S = min(distance(X1, Y1, -Z2, Y2), distance(X1, Y1, -Y2, -Z2));
  23. S = min(S, distance(X1, Y1, Y2 - B, B + Z2));
  24. }
  25. if (X2 == A)
  26. {
  27. S = min (distance(X1, Y1, Z2 + A, Y2), distance(X1, Y1, A + Y2, -Z2));
  28. S = min(S, distance(X1, Y1, A + B - Y2, Z2 + B));
  29. }
  30. if (Y2 == 0)
  31. {
  32. S = min(S, distance(X1, Y1, X2, -Z2));
  33. S = min(S, distance(X1, Y1, -Z2, -X2));
  34. S = min(S, distance(X1, Y1, A + Z2, X2 - A));
  35. }
  36. if (Y2 == B)
  37. {
  38. S = min(S, distance(X1, Y1, X2, Z2 + B));
  39. S = min(S, distance(X1, Y1, -Z2, X2 + B));
  40. S = min(S, distance(X1, Y1, A + Z2, B + A - X2));
  41. }
  42. if ((Y2 != 0) && (Y2 != B) && (X2 != 0) && (X2 != A))
  43. {
  44. S = min(C + distance(X1, Y1, X2, Y2), distance(X1, Y1, X2, -Y2 - C));
  45. S = min(S, distance(X1, Y1, X2, 2*B - Y2 + C));
  46. S = min(S, distance(X1, Y1, -X2 - C, Y2));
  47. S = min(S, distance(X1, Y1, 2*A - X2 + C, Y2));
  48. S = min(S, distance(X1, Y1, A + B + C - Y2, A + B - X2));
  49. S = min(S, distance(X1, Y1, A + C + Y2, X2 - A));
  50. S = min(S, distance(X1, Y1, -C - Y2, -X2));
  51. S = min(S, distance(X1, Y1, Y2 - B - C, B + X2));
  52. S = min(S, distance(X1, Y1, A + B - Y2, A + B + C - X2));
  53. S = min(S, distance(X1, Y1, Y2 - B, B + C + X2));
  54. S = min(S, distance(X1, Y1, -Y2, -C - X2));
  55. S = min(S, distance(X1, Y1, A + Y2, -A - C + X2));
  56. }
  57. }
  58. cout << fixed << setprecision(2) << S;
  59. return 0;
  60. }
Success #stdin #stdout 0s 4544KB
stdin
Standard input is empty
stdout
-nan