ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1348. Пусти козла в огород 2

AC in 0.001
Послано abid1729 9 авг 2019 23:41
#include<bits/stdc++.h>
using namespace std;
int main()
{
    double a,b,c,d,m,n,l,p,t,s,k;
    cin>>a>>b>>c>>d>>m>>n>>l;
    p=sqrt((a-m)*(a-m)+(b-n)*(b-n));
    t=sqrt((c-m)*(c-m)+(d-n)*(d-n));
    s=max(p,t);
    if(s>l){s-=l;
    }
    else{ s=0;}
    k=min(p,t);
    if(k<=l){
        k=0;
    }
    else if(p==t){
        a=(a+c)/2,b=(b+d)/2;
        k=sqrt((a-m)*(a-m)+(b-n)*(b-n));
        if(k<=l){
        k=0;
    }
    else{
        k-=l;
    }
    }
    else{
    while(abs(p-t)>.001){
        if(p<t){
            c=(a+c)/2,d=(b+d)/2;
            t=sqrt((c-m)*(c-m)+(d-n)*(d-n));
        }
        else{
            a=(a+c)/2,b=(b+d)/2;
            p=sqrt((a-m)*(a-m)+(b-n)*(b-n));
        }
    }
    k=min(p,t);
        if(k<=l){
        k=0;
    }
    else{
        k-=l;
    }
    }
    cout<<fixed<<setprecision(2)<<k<<endl;
    cout<<fixed<<setprecision(2)<<s<<endl;
}