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

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

Help please!WA#25
Послано Sasha 14 янв 2013 01:42
Re: Help please!WA#25
Послано Sasha 14 янв 2013 01:55
#include <stdio.h>
#include <math.h>
int ax,ay,bx,by,cx,cy,l;
double AB,AC,BC,p,h,mas[3],tmp;
int main(){
    scanf("%d%d%d%d%d%d%d",&ax,&ay,&bx,&by,&cx,&cy,&l);
    AC=sqrt(pow(ax-cx,2.0)+pow(ay-cy,2.0));
    AB=sqrt(pow(ax-bx,2.0)+pow(ay-by,2.0));
    BC=sqrt(pow(bx-cx,2.0)+pow(by-cy,2.0));

    p=(AB+BC+AC)/2;
    h=((sqrt(p*(p-AB)*(p-BC)*(p-AC))*2)/AB)-l;
    AC=AC-l;
    BC=BC-l;
    if(AC<0) AC=0;
    if(BC<0) BC=0;
    if(h<0) h=0;
    mas[0]=AC; mas[1]=BC; mas[2]=h;
    for(int i=0;i<3;i++){
        for(int j=i+1;j<3;j++){
            if(mas[i]>mas[j]){
                tmp=mas[i];
                mas[i]=mas[j];
                mas[j]=tmp;
            }
        }
    }
    if(((ax!=bx) && (ay!=by) || (0-ax!=bx) && (0-ay!=by)) && (ax<cx && bx>cx) || (ax>cx && bx<cx) || (ay<cy && by>cy) || (ay<cy && by>cy))
    printf("%.2f\n%.2f",mas[0],mas[2]);
    else
    {
        if(BC<AC)
        {
            tmp=AC;
            AC=BC;
            BC=tmp;
        }
        printf("%.2f\n%.2f",AC,BC);
    }
}