Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- double distance(double x1, double y1, double x2, double y2) {
- y2 -= y1; x2 -= x1;
- return sqrt(x2*x2+y2*y2);
- }
- double min_distance(double x1, double y1, double x2, double y2, double xc, double yc) {
- while (distance(x1, y1, x2, y2) > 1e-6) {
- double x_mid = (x1+x2) / 2, y_mid = (y1+y2) / 2;
- double d1 = distance(x1, y1, xc, yc);
- double d2 = distance(x2, y2, xc, yc);
- if (d1 < d2) {
- x2 = x_mid;
- y2 = y_mid;
- } else {
- x1 = x_mid;
- y1 = y_mid;
- }
- }
- return std::min(distance(x1, y1, xc, yc), distance(x2, y2, xc, yc));
- }
- int main() {
- freopen("input.txt", "rt", stdin);
- freopen("output.txt", "wt", stdout);
- int x1, y1, x2, y2, x3, y3, xc, yc;
- scanf("%d %d %d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &xc, &yc);
- double d = min_distance(x1, y1, x2, y2, xc, yc);
- d = std::min(d, min_distance(x2, y2, x3, y3, xc, yc));
- d = std::min(d, min_distance(x1, y1, x3, y3, xc, yc));
- printf("%0.6lf", d);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement