Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#1 2006-10-28 11:19:42

reiten
журі
Звідки: Киев
Зареєстрований: 2005-10-16
Повідомлень: 196

Вывод вещественных чисел в задаче Pool и результаты

Уважаемое Жури!
К сожалению имеет место слудующая ситуация.
В условии задачи Pool не указан точно формат вывода.
На форуме в теме "Задача Pool" даже задавался вопрос насчет формы вывода:

Джулгаков Дмитрий написав:

Хорошо, в таком случае как выводить ответ средствами C? printf("%le",.....); подойдет? по умолчанию знаков выводится меньше чем в примере, но онлайн проверку проходит...

Этот вопрос, к сожалению, не получил официального ответа.
Но после тестирования оказалось, что при выводи в C++ ответа с помощью

Код:

printf("%le\n",res);

программа набирает 13 балов.
Та же программа, но с выводом в другом формате:

Код:

printf("%lf\n",res);

Набирает 20 балов.
Оба эти формата вывода являются способами по умолчанию в С++.
Почему балы учасников зависят от того, угадали ли они, какой способ надо использовать, чтобы получить полный бал?
Просьба рассмотреть эту ситуацию и, по возможности, исправить систему тестирования, чтобы она признавала правильным оба способа вывода.
Заранее спасибо.


"...Существуют два подхода к проектированию программ. В одном архитектура делается настолько простой, что в ней явно нет дефектов; в другом - настолько сложной, что в ней нет явных дефектов".
С. А. Хоар

Поза форумом

 

#2 2006-10-28 11:55:23

Джулгаков Дмитрий
Олімпієць
Звідки: Харьков
Зареєстрований: 2005-11-03
Повідомлень: 61

Re: Вывод вещественных чисел в задаче Pool и результаты

Полностью согласен с reiten. В условии сказано, что необходимо выводить ответ без форматирования, стандартным образом. Для языка С в фукнции printf стандартными являются как "%lf" так и "%le". Более того, в тестовом примере сделан вывод в экспоненцальном формате, что достигается в С именно "%le". Собственно, что касается меня, то я всегда делал вывод в виде "%lf", изза именно тестового примера я сделал вывод в виде "%le".

Прошу жюри рассмотреть этот вопрос, потому что такая неопределенность влечет за собой неравноправие языков программирования. Замечу, что проблема именно в выводе, поскольку с точностью все нормально, я использовал тип double.

Насколько мне известно, кроме меня и Даниила Нейтера, такая проблема возникла и у Николая Тимченко. Хотя в целом, похоже все 13 баллов по задаче pool с решениями на языке С вызваны этой проблемой.

Заранее благодарен.

P.S. На мой взгляд, жюри должно наоборот с большей внимательностью относиться к участниками, пишущим на С. Поскольку с этого года на межнаре поддерживается только linux, а под ним программирование на Паскале связано с определенными трудностями...

Відредаговано Джулгаков Дмитрий (2006-10-28 11:56:59)

Поза форумом

 

#3 2006-10-28 13:24:37

Журі NetOI-2006-Пасіхов
Адміністратор
Зареєстрований: 2006-09-09
Повідомлень: 126

Re: Вывод вещественных чисел в задаче Pool и результаты

reiten написав:

Уважаемое Жури!
К сожалению имеет место слудующая ситуация.
В условии задачи Pool не указан точно формат вывода.
На форуме в теме "Задача Pool" даже задавался вопрос насчет формы вывода:

Джулгаков Дмитрий написав:

Хорошо, в таком случае как выводить ответ средствами C? printf("%le",.....); подойдет? по умолчанию знаков выводится меньше чем в примере, но онлайн проверку проходит...

Этот вопрос, к сожалению, не получил официального ответа.
Но после тестирования оказалось, что при выводи в C++ ответа с помощью

Код:

printf("%le\n",res);

программа набирает 13 балов.
Та же программа, но с выводом в другом формате:

Код:

printf("%lf\n",res);

Набирает 20 балов.
Оба эти формата вывода являются способами по умолчанию в С++.
Почему балы учасников зависят от того, угадали ли они, какой способ надо использовать, чтобы получить полный бал?
Просьба рассмотреть эту ситуацию и, по возможности, исправить систему тестирования, чтобы она признавала правильным оба способа вывода.
Заранее спасибо.

Ошибки тестирования нет. Система корректно обрабатывает результат в ЛЮБОМ из используемых в языках программирования форматов ( подтверждением того- часть тестов ваше решение проходит, значит формат понимается системой правильно). Алгоритм проверки очевиден из фрагмента проверяющего модуля (Python)
   
    eps = 0.00001
   
    def check(self, dat, chk, sol):
        if sol.result==[]:
           self.break_BD()              
        if (abs(sol.result[0] - chk.result[0]) > self.eps):
        self.break_WA()
    self.break_OK()

В условии задачи предлагалось выводить результат, не округляя. Мы полагали, что этого достаточно, дабы участник понимал, что вывести его нужно как можно точнее. Значение констаты eps выбрано таким, чтобы участник, использующий любой разрешенный олимпиадой компилятор, мог ее достичь.

Тереь по поводу "неответов" на вопрос Дмитрия. Нельзя лишать себя точности (которая, кстати "ничего не стоит" в этой задаче) лишь только потому, что более грубый результат проходит он-лайн проверку на авторском тесте. Там числа так подобраны специально.

Единственное, с чем можно частично согласится - это отсутствие в условии слов "как можно точнее". Хотя еще раз скажу, мне казалось это очевидным.

Неравноправного отношеия к языкам программирования я тут ни коим образом не усматриваю.

Поза форумом

 

#4 2006-10-28 14:18:02

reiten
журі
Звідки: Киев
Зареєстрований: 2005-10-16
Повідомлень: 196

Re: Вывод вещественных чисел в задаче Pool и результаты

Журі NetOI-2006-Пасіхов
Известно,что точность обоих вариантов вывода зависит от умолчаний системы, где компилируется программа. Таким образом я как учасник не могу предсказать, какая из форм вывода выдаст большую точность. Нигде в правилах или условиях этого не сказано, как и не сказано, каким именно способом выводить действительные числа. На форуме, как я уже писал, задавался вопрос. Ответа на этот вопрос не последовало вообще. Но после появления результатов олимпиады оказалось, что проходит только 1 из способов вывода ответа.
Неравноправие языков состоит в том, что в паскале есть только 1 стандартный способ вывода, который принимается как правильный.
Никто точности себя решал. Моя программа, которую я сдал выводит ответ не округляя и выполняет все положение правил и условий:

Код:

#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

#define SQR(x) ((x)*(x))
#define DISTANCE(x1,y1,x2,y2) sqrt(SQR((x1)-(x2))+SQR((y1)-(y2)))

int main() {
     double xmax,ymax,x1,y1,x2,y2;
     double res=1e100;
//      freopen("pool.in","r",stdin);
     scanf("%lf%lf%lf%lf%lf%lf",&xmax,&ymax,&x1,&y1,&x2,&y2);
     res=min(res,DISTANCE(x1,y1,x2,-y2));
     res=min(res,DISTANCE(x1,y1,-x2,y2));
     res=min(res,DISTANCE(x1,y1,x2,2*ymax-y2));
     res=min(res,DISTANCE(x1,y1,2*xmax-x2,y2));
     printf("%le\n",res);
     return 0;
}

Если же в этой же программе поменять метод вывода на %lf, то она благополучно проходит все тесты из условия:

Код:

#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

#define SQR(x) ((x)*(x))
#define DISTANCE(x1,y1,x2,y2) sqrt(SQR((x1)-(x2))+SQR((y1)-(y2)))

int main() {
     double xmax,ymax,x1,y1,x2,y2;
     double res=1e100;
//      freopen("pool.in","r",stdin);
     scanf("%lf%lf%lf%lf%lf%lf",&xmax,&ymax,&x1,&y1,&x2,&y2);
     res=min(res,DISTANCE(x1,y1,x2,-y2));
     res=min(res,DISTANCE(x1,y1,-x2,y2));
     res=min(res,DISTANCE(x1,y1,x2,2*ymax-y2));
     res=min(res,DISTANCE(x1,y1,2*xmax-x2,y2));
     printf("%lf\n",res);
     return 0;
}

Оба варианта - абсолютно правильные решения и полностью выволняют все положения и условия олимпиады. Почему решение, выполнившее все условия олимпиады получает только часть балов? Просьба принять какие-то меры относительно этой проблемы. Заранее спасибо.
Даниил Нейтер.


"...Существуют два подхода к проектированию программ. В одном архитектура делается настолько простой, что в ней явно нет дефектов; в другом - настолько сложной, что в ней нет явных дефектов".
С. А. Хоар

Поза форумом

 

#5 2006-10-28 16:04:43

Sharp
Олімпієць
Зареєстрований: 2005-10-17
Повідомлень: 34

Re: Вывод вещественных чисел в задаче Pool и результаты

Еще более неприятная обстановка складывается в случае использования стандартного ввода/вывода C++ через cout. В этом случае для достижения точности, которая требуется для прохождения всех тестов, необходимо использовать НЕ СТАНДАРТНЫЙ способ, заключающийся в изменении формата вывода с помощью cout.precision(число знаков), в отличие от Си, где и %lf и %le являются стандартными.

Поза форумом

 

#6 2006-10-28 16:51:20

Журі NetOI-2006-Пасіхов
Адміністратор
Зареєстрований: 2006-09-09
Повідомлень: 126

Re: Вывод вещественных чисел в задаче Pool и результаты

По-моему, дискуссия носит "турнирный" характер. Задачи, право, того не стоят.

1.Не оценены тесты, в которых результат менее точен, чем авторский. (см. выше сообщение)
2. ВО ВСЕХ компиляторах нужная точность достижима (проверял)
3. Настройки среды по умолчанию (?) - в правилах указан тип используемого компилятора и стандврт, с которым должны быть совместимы решения. Использование иных настроек в правилах не оговаривалось и НЕ ПРОИЗВОДИЛОСЬ.
Цитирую правила:
 

Для трансляцiї програм на мовах  C  и  C++  використовується компiлятор GNU Compiler Collection 3.3.2. Версiї для MS  DOS  та MS Windows можна  взяти  на  серверах  http://www.delorie.com та    http://www.mingw.org ,  для iнших систем  його  можна  отримати  на http://gcc.gnu.org.
При  компiляцiї  програм,  написаних    на    C    та    C++ використовується режим  повної   сумiсностi   з  стандартом  ANSI.Програма збирається разом з математичною бiблiотекою.

  Ви  можете користуватись iншими компiляторами, але врахуйте, що GNU C не пiдтримує їх розширень, якi  виходять за  стандарт  мови.

4. Оказалось, что "вывести не округляя" участники не восприняли как "максимально точно" .Готов согласитья, не совсем одно и то же.... но я был уверен, что подразумевается... В любом случае учтем на будущее, а пока все были в одинаковых условиях. Прямых вопросов по точности не было. Были вопросы типа  "Как в С выводить - так или так?"  - мы на такие вопросы не отвечаем - работаешь со средой - должен ее знать, не знаешь- работай в том, что знаешь (позиция принципиальная).

Поза форумом

 

#7 2006-10-28 20:18:59

alex_kasycky
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 92

Re: Вывод вещественных чисел в задаче Pool и результаты

reiten написав:

...Но после появления результатов олимпиады оказалось, что проходит только 1 из способов вывода ответа.
Неравноправие языков состоит в том, что в паскале есть только 1 стандартный способ вывода, который принимается как правильный...

Способов вывести далеко не 1 и не два в обоих языках(да и что считать стандартным) wink

А в условии про "стандарт" ничего не говорилось, сказано было не округляя.
В прошлом году в условии было что-то подобное... И на вопрос сколько знаков выводить, Жюри ответило "в скольки уверен"(не дословно, а по памяти, если что - сорри...).

Я тоже не знал как выводить... Но ведь у нас есть он лайн тестилка smile

Я например, на проверке онлайн проверил что достаточно до пятого знака, но все равно выводил десять знаков после точки. Логика предельно проста, если онлайн тесты проходит, то зачем урезать знаки? От того что выведу больше хуже не будет wink

Код:

   cout.setf(ios::fixed);cout.precision(10);
   cout<<ANS<<endl;

Відредаговано alex_kasycky (2006-10-28 20:19:48)


Этот аккаунт не работает... мой новый аккаунт - alexkasycky

Поза форумом

 

#8 2006-10-28 21:17:21

Jura
Новий користувач
Зареєстрований: 2006-10-14
Повідомлень: 15

Re: Вывод вещественных чисел в задаче Pool и результаты

Чёрт, та же беда - я по старой привычке экономить память переменные single`м обозвал... Блин, ну надо же было точность то в условии написать! Ладно, ладно, действительно - не та эта задача  за которую нужно спорить - это моя ошибка sad

_____
add.

Блииииииин... На задаче area - вообще какая то ошибка идиотская - вместо integer byte написал... И все - так - все идеально решенная задача.. Всё - надо теперь решать днем а не ночью..

Відредаговано Jura (2006-10-28 21:26:46)

Поза форумом

 

#9 2006-10-28 21:43:12

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

после добавления cout.precision(20); моя программа набрала при онлайн-тестировании 19 баллов, вместо 10и полученных... :'( неужели фраза "не округляя" означает то, что результат должен содержать полностью мантиссу числа?


icq - 402174

Поза форумом

 

#10 2006-10-29 01:38:22

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Вывод вещественных чисел в задаче Pool и результаты

Знаете ли господа товариши. Не при детях будет сказано но так СРАТСЯ за семь балов которые в итоге зуб даю ничего не решат все равно. Да и ваще сишникам месть за стл. Паскаль форева - ну это конечно шутки, но пора и честь знать. Все равно если даже будет у вас 100 - всеравно на перво месте не будете, а если не будет 100 балов - тоже корона не спадет...


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#11 2006-10-29 08:53:29

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

necro написав:

Знаете ли господа товариши. Не при детях будет сказано но так СРАТСЯ за семь балов которые в итоге зуб даю ничего не решат все равно. Да и ваще сишникам месть за стл. Паскаль форева - ну это конечно шутки, но пора и честь знать. Все равно если даже будет у вас 100 - всеравно на перво месте не будете, а если не будет 100 балов - тоже корона не спадет...

знаешь, Товарищ... не при детях будет сказано, но так СРАТЬСЯ из-за нашего желания получить эти 7 баллов это, на мой взгляд, никак не может быть следствием знания чести. и что тут говорить о великой цели быть 1ым? я не стану закрывать глаза даже на один бал, даже находясь на последнем месте… таковы принципы…


icq - 402174

Поза форумом

 

#12 2006-10-29 09:10:38

Nicky Nick
Олімпієць
Звідки: Харьков
Зареєстрований: 2005-11-25
Повідомлень: 48
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

necro написав:

Знаете ли господа товариши. Не при детях будет сказано но так СРАТСЯ за семь балов которые в итоге зуб даю ничего не решат все равно. Да и ваще сишникам месть за стл. Паскаль форева - ну это конечно шутки, но пора и честь знать. Все равно если даже будет у вас 100 - всеравно на перво месте не будете, а если не будет 100 балов - тоже корона не спадет...

Месть за СТЛ... СРАТЬСЯ за семь баллов... Насмешил. По-моему, ты слегка не уловил смысл этой дискуссии. Перечитай еще раз посты Reitena и Джулгакова Дмитрия и обмозгуй прочитанное

Поза форумом

 

#13 2006-10-29 10:12:40

Nicky Nick
Олімпієць
Звідки: Харьков
Зареєстрований: 2005-11-25
Повідомлень: 48
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

alex_kasycky написав:

Я тоже не знал как выводить... Но ведь у нас есть он лайн тестилка smile

Загвоздочка... Оба варианта кода на C проходили онлайн-проверку

Поза форумом

 

#14 2006-10-29 10:39:15

alex_kasycky
Олімпієць
Зареєстрований: 2005-10-09
Повідомлень: 92

Re: Вывод вещественных чисел в задаче Pool и результаты

Nicky Nick написав:

alex_kasycky написав:

Я тоже не знал как выводить... Но ведь у нас есть он лайн тестилка smile

Загвоздочка... Оба варианта кода на C проходили онлайн-проверку

Я это написал, прочитай мой пост внимательней wink


Этот аккаунт не работает... мой новый аккаунт - alexkasycky

Поза форумом

 

#15 2006-10-29 11:26:28

Yevgeniy
Новий користувач
Зареєстрований: 2006-10-14
Повідомлень: 67

Re: Вывод вещественных чисел в задаче Pool и результаты

Шановні ЖУРІ!!! В умові задачі на тесті ДАНИЙ ПРИКЛАД ВИХІДНИХ ДАНИХ : 8.94427190999159Е+000. Звідки слідує, що дані потрібно виводити у експотенціальній формі, тобто на С++ це буде так:
cout.setf(ios::scientific);
cout<<res;
НА С так:
printf("%le\n",res);
Тобто у прикладі ви даєте один формат даних, при тестуванні на повному наборі тестів ви даєте інший формат вихідних даних. ТОМУ ВИ ОБ'ЯЗАНІ ПЕРЕПРОВІРИТИ РІШЕННЯ УСІХ УЧАСНИКІВ НА ЦІЙ ЗАДАЧІ використовуючи два формата вихідних даних.


"Математика -- цариця наук, арифметика -- цариця математики."
      Карл Фрідріх Гаусс (1777 - 1855) - КОРОЛЬ МАТЕМАТИКІВ.

Поза форумом

 

#16 2006-10-29 12:06:34

necro
Олімпієць
Зареєстрований: 2005-11-19
Повідомлень: 134

Re: Вывод вещественных чисел в задаче Pool и результаты

2Evgeniy :  "Об'язані" говоришь smile
2NickyNick : Это ты перечитай мой посто а не выдирай цитаты которые без самого поста имеют не тот смысл. Я написал что это шутка. А я то и имел ввиду что овчинка выделки не стоит. Ну даже если жюри допустило ошибку в системе проверки (что сомнительно) всеравно семь баллов... Жюри уже про второй тур думать должно а вы первый никак не отпустите... Не так много человек в жюри что бы их так доставать...
2xXx : Сраные ваши принципы... sad


Да что там "винница" под новый год... Матан - вот в чем сила

Поза форумом

 

#17 2006-10-29 15:32:02

Sharp
Олімпієць
Зареєстрований: 2005-10-17
Повідомлень: 34

Re: Вывод вещественных чисел в задаче Pool и результаты

Мы не занимаемся дракой за "лишние семь баллов", мы прикладываем усилия к улучшению олимпиады NetOI, к уточнению формулировок, используемых в правилах и условиях. "Не округляя" сложно воспринять иначе как "не предпринимая никаких дополнительных действий по округлению". Кому-либо за что-то мстить глупо, не говоря уж о том, что СТЛ - не случайный элемент, который (о ужас!) появился не в великолепном, академическом Паскале, а в языке для тупых ремесленников C++, а закономерное следствие стройности и ортогональности синтаксиса серьезного профессионального языка, и задач, которые стоят перед C++-программистами. Кроме того, Паскаль никак не может быть "форева", поскольку его, наконец-то, начали запрещать на соревнованиях по программированию всех уровней.

Поза форумом

 

#18 2006-10-29 15:44:53

Snake
Новий користувач
Звідки: Донецк
Зареєстрований: 2006-10-28
Повідомлень: 19
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

Круто! Старый друг Паскаль меня не подвел!!! Нету там никаких проблем с выводом - загнал экстендыд и все ок, 20/20 балов! Так что жури тоже молодец. Надо же дискридитировать не только Паскаль, а и Си(хоть изредка). Ну, как говорится, старый друг лучше новых двух:)

Відредаговано Snake (2006-10-30 13:50:08)


Если опоздал, то можно уже не спешить...

Поза форумом

 

#19 2006-10-29 17:15:55

Skiminok
Новий користувач
Звідки: Киев, Украина
Зареєстрований: 2006-01-19
Повідомлень: 144
Вебсайт

Re: Вывод вещественных чисел в задаче Pool и результаты

Snake, а мог ли избранный мною double дать неточность в ответах? А то 2 дня за 8 баллов парюсь...


Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.
http://wwp.icq.com/scripts/online.dll?icq=282667777&amp;img=5ICQ 282667777

Поза форумом

 

#20 2006-10-29 19:30:13

Fizteh
Новий користувач
Зареєстрований: 2006-09-17
Повідомлень: 99

Re: Вывод вещественных чисел в задаче Pool и результаты

Yevgeniy написав:

Шановні ЖУРІ!!! В умові задачі на тесті ДАНИЙ ПРИКЛАД ВИХІДНИХ ДАНИХ : 8.94427190999159Е+000. Звідки слідує, що дані потрібно виводити у експотенціальній формі, тобто на С++ це буде так:
cout.setf(ios::scientific);
cout<<res;
НА С так:
printf("%le\n",res);
Тобто у прикладі ви даєте один формат даних, при тестуванні на повному наборі тестів ви даєте інший формат вихідних даних. ТОМУ ВИ ОБ'ЯЗАНІ ПЕРЕПРОВІРИТИ РІШЕННЯ УСІХ УЧАСНИКІВ НА ЦІЙ ЗАДАЧІ використовуючи два формата вихідних даних.

Да ладно, прям таки Об"язаны. Не надо так к жури обращатся. А то вдруг кому-то не понравится..?

Поза форумом

 

#21 2006-10-30 10:45:53

reiten
журі
Звідки: Киев
Зареєстрований: 2005-10-16
Повідомлень: 196

Re: Вывод вещественных чисел в задаче Pool и результаты

Skiminok написав:

Snake, а мог ли избранный мною double дать неточность в ответах? А то 2 дня за 8 баллов парюсь...

Скорее всего, у тебя тоже виноват не double, а вывод числа. Точности double хватает. А вот точность на выводе - другой вопрос. Здесь эта проблема собственно и обсуждается. Как ты выводил ответ?


"...Существуют два подхода к проектированию программ. В одном архитектура делается настолько простой, что в ней явно нет дефектов; в другом - настолько сложной, что в ней нет явных дефектов".
С. А. Хоар

Поза форумом

 

#22 2006-10-30 12:15:39

Ramzes2
Новий користувач
Звідки: Черкаська обл
Зареєстрований: 2006-10-19
Повідомлень: 8

Re: Вывод вещественных чисел в задаче Pool и результаты

Yevgeniy написав:

Шановні ЖУРІ!!! В умові задачі на тесті ДАНИЙ ПРИКЛАД ВИХІДНИХ ДАНИХ : 8.94427190999159Е+000. Звідки слідує, що дані потрібно виводити у експотенціальній формі, тобто на С++ це буде так:
cout.setf(ios::scientific);
cout<<res;

Але з тесту з умови випливає і те, що треба писати не cout<<res;, а:
cout << setprecision(14) << Res << endl;


"Всегда найдется тот человек, который знает того человека, у которого ЭТО работало, но по независящим от него причинам показать того человека или ЭТО он не может...".
Из Законов Мерфи.

Поза форумом

 

#23 2006-10-30 15:54:01

Yevgeniy
Новий користувач
Зареєстрований: 2006-10-14
Повідомлень: 67

Re: Вывод вещественных чисел в задаче Pool и результаты

В умові сказано вивести результат не округлюючи. На форумі було сказано, що точності задавати не потрібно, просто вивести результат, а віповідний компільтор забезпечить необхідну точність.Отже
cout.setf(ios::scientific);
cout<<res;


"Математика -- цариця наук, арифметика -- цариця математики."
      Карл Фрідріх Гаусс (1777 - 1855) - КОРОЛЬ МАТЕМАТИКІВ.

Поза форумом

 

#24 2006-11-01 03:50:07

IMax
Новий користувач
Звідки: Київ, общага КНУ №16
Зареєстрований: 2006-11-01
Повідомлень: 6

Re: Вывод вещественных чисел в задаче Pool и результаты

Sharp написав:

Еще более неприятная обстановка складывается в случае использования стандартного ввода/вывода C++ через cout. В этом случае для достижения точности, которая требуется для прохождения всех тестов, необходимо использовать НЕ СТАНДАРТНЫЙ способ, заключающийся в изменении формата вывода с помощью cout.precision(число знаков)...

Ти знаєш.... я саме таким способом і зробив...:))) Результат - 20

#include <iostream.h>
#include <math.h>

#define min(a,b) (((a)<=(b))?(a):(b))

double inline dist(double ax,double ay,double bx,double by)
{
        return sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
}

int main()
{
        cout.precision(20);
        double xs,ys,x1,y1,x2,y2;
        cin >> xs >> ys >> x1 >> y1 >> x2 >> y2;
        double d1,d2,d3,d4;
        d1=dist(x1,y1,-x2,y2);
        d2=dist(x1,y1,x2,-y2);
        d3=dist(x1,y1,2*xs-x2,y2);
        d4=dist(x1,y1,x2,2*ys-y2);
        cout << min(min(d1,d2),min(d3,d4));
        return 0;
}


Навіт не намагайтесь лякати мене мурддраалами, я боюсь тільки себе...

Поза форумом

 

#25 2006-11-01 07:41:39

Sharp
Олімпієць
Зареєстрований: 2005-10-17
Повідомлень: 34

Re: Вывод вещественных чисел в задаче Pool и результаты

Код:

        cout.precision(20);

Вот эту строчку и обсуждаем.

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt