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


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

Ви не зайшли.

#1 2005-11-20 13:41:55

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

Разве программа должна читать все данные????

Вопрос к жюри:
Задача CIRCUIT:
var
  K, k2, k4, v, t, i, ans : Longint;
  A : array [1..40000] of Longint;
begin
  Read(k);
  k2 := k div 2;
  k4 := k div 4;
  v := 0;
  for i := 1 to k2 do
  Read(A[i]);
  for i := 1 to k2 do
  begin
    Inc(v, A[i]);
  end;
  if v = k4 then
    ans := 0
  else
    for i := 1 to k2 do
    begin
      Read(A[k2+i]);
      if (A[k2+i]<>0) xor (A[i]<>0) then
        if A[i] = 0 then
          Inc(v)
        else
          Dec(v);
      if v = k4 then
      begin
        ans := i;
        Break;
      end;
    end;
{******}  for i := ans+1 to k2 do
{******}    Read(A[1]);
  if (ans = 0) or (ans = k2) then
    Write('1 ', k2, ' ', k2+1)
  else
    Write('2 ', ans, ' ', ans+1, ' ', ans+k2, ' ', ans+k2+1);
end.

Я посылал на проверку вариант, когда не было строчек с {*****}. В результате слетали по BD два последних теста. Когда же я добавил эти строки, то все прекрасно работает, т.е. программа прошла в online все тесты.

Поэтому вопрос:
Получается, что если программа не читает всех входных данных, то эти данные портят следующие тесты????? Или как понимать эту ситуацию? Если это действительно так, то я считаю что стоит перепроверить у всех участников задачу CIRCUIT, ведь не только у меня такие ошибки!!!!

Кстати проверить эту тонкость одним тестом во время тура в online нельзя было sad

Поза форумом

 

#2 2005-11-20 14:39:07

Журі NetOI-2005 - Пасіхов
Адміністратор
Зареєстрований: 2005-10-01
Повідомлень: 74

Re: Разве программа должна читать все данные????

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

Вопрос к жюри:
Задача CIRCUIT:
Поэтому вопрос:
Получается, что если программа не читает всех входных данных, то эти данные портят следующие тесты????? Или как понимать эту ситуацию?
(

Понимать так, как написано в  правилах- нужно СТРОГО выпонять все технические условия. - обычное дело при аппаратной проверке

Поза форумом

 

#3 2005-11-20 15:08:21

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

Re: Разве программа должна читать все данные????

Технические требования я строго выполнял, но я НИГДЕ не видел, что программа должна читать с экрана ВСЕ данные! Насколько я понимаю, система проверки перенаправляет ввод-вывод в файл и поэтому если программа не прочитала всех данных, но выдала правильный ответ, то все должно быть ОК. Хотя как видно из моего примера, это не так. Кстати, не только я пролетел на этом моменте. Довольно много участников набрало 16 балов - скорее всего изза этого.

Поэтому прошу объяснить почему не работает программма, которая чичает не все данные, но выдает ПРАВИЛЬНЫЙ ответ.

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

Поза форумом

 

#4 2005-11-20 16:40:56

Журі NetOI-2005 - Пасіхов
Адміністратор
Зареєстрований: 2005-10-01
Повідомлень: 74

Re: Разве программа должна читать все данные????

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

Технические требования я строго выполнял, но я НИГДЕ не видел, что программа должна читать с экрана ВСЕ данные! Насколько я понимаю, система проверки перенаправляет ввод-вывод в файл и поэтому если программа не прочитала всех данных, но выдала правильный ответ, то все должно быть ОК. Хотя как видно из моего примера, это не так. Кстати, не только я пролетел на этом моменте. Довольно много участников набрало 16 балов - скорее всего изза этого.

Поэтому прошу объяснить почему не работает программма, которая чичает не все данные, но выдает ПРАВИЛЬНЫЙ ответ.

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

1. Программа читает с  стандартного устройства ввода, в нашем случае - клавиатура, но это может быть, как вы понимаете, перенаправлено.  Экран не подходит .
2. Цитирую условие
........
Технічні умови: Програма читає з клавiатури кiлькiсть ланок k, а далi - k чисел 0 або 1 (0 - срiбна ланка, 1 -
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
золота). Всi числа вводяться одним рядком через пропуски. Програма виводить на екран єдине число -
              ^^^^
мiнiмальну кiлькiсть розрiзiв та номери ланок, мiж якими зроблено розрiзи. Перший розрiз повинен бути як можна ближче до початку ланцюга. N < 10000

Похоже, что технические условия ОДНОЗНАЧНО указывают на необходимость чтения ВСЕХ входных данных

Поза форумом

 

#5 2005-11-20 17:24:17

Vladislav Simonenko
Олімпієць
Зареєстрований: 2005-10-05
Повідомлень: 20

Re: Разве программа должна читать все данные????

Журі NetOI-2005 - Пасіхов написав:

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

Технические требования я строго выполнял, но я НИГДЕ не видел, что программа должна читать с экрана ВСЕ данные! Насколько я понимаю, система проверки перенаправляет ввод-вывод в файл и поэтому если программа не прочитала всех данных, но выдала правильный ответ, то все должно быть ОК. Хотя как видно из моего примера, это не так. Кстати, не только я пролетел на этом моменте. Довольно много участников набрало 16 балов - скорее всего изза этого.

Поэтому прошу объяснить почему не работает программма, которая чичает не все данные, но выдает ПРАВИЛЬНЫЙ ответ.

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

1. Программа читает с  стандартного устройства ввода, в нашем случае - клавиатура, но это может быть, как вы понимаете, перенаправлено.  Экран не подходит .
2. Цитирую условие
........
Технічні умови: Програма читає з клавiатури кiлькiсть ланок k, а далi - k чисел 0 або 1 (0 - срiбна ланка, 1 -
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
золота). Всi числа вводяться одним рядком через пропуски. Програма виводить на екран єдине число -
              ^^^^
мiнiмальну кiлькiсть розрiзiв та номери ланок, мiж якими зроблено розрiзи. Перший розрiз повинен бути як можна ближче до початку ланцюга. N < 10000

Похоже, что технические условия ОДНОЗНАЧНО указывают на необходимость чтения ВСЕХ входных данных

Я вже майже 5 років приймаю участь у різних Інтернет олімпіадах, але чесно кажучи на таку відповідь не розраховував, мабуть ця олімпіада з-поміж інших абсолютне виключення, можна сказати унікальна, а отже по-моєму таке виключення журі обов’язково повинно цитувати в правилах олімпіади, або ж хоч трошки слідкувати за форумом, а так навіщо він створений. Дивіться тему %ВХОДНЫЕ ДАННЫЕ залишив xXx%, там є роз’яснення ,на мою думку більш досвідченого олімпійця ніж я, по цьому питанню:) , мабуть багато олімпійців переглянули цю тему.

P.S. Короче - для багатьох це був великий surprise. Надіюсь, що більше журі так дивувати не буде.

Відредаговано Vladislav Simonenko (2005-11-20 17:25:44)

Поза форумом

 

#6 2005-11-20 17:54:17

Журі NetOI-2005 - Пасіхов
Адміністратор
Зареєстрований: 2005-10-01
Повідомлень: 74

Re: Разве программа должна читать все данные????

Та немає тут, шановний Влалислав, ніякого сюрпризу. Є конфлікт між певним досвідом та необхідністю чітко виконувати техннічні умови. 

Підкажіть, будь ласка, що сказанов технічних умовах неоднозначно? Що потрібно було оговорювати окремо?

Технічні умови: Програма читає з клавiатури кiлькiсть ланок k, а далi - k чисел 0 або 1 (0 - срiбна ланка, 1 -
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
золота). Всi числа вводяться одним рядком через пропуски. Програма виводить на екран єдине число -
              ^^^^
мiнiмальну кiлькiсть розрiзiв та номери ланок, мiж якими зроблено розрiзи. Перший розрiз повинен бути як можна ближче до початку ланцюга. N < 10000

Перевіряюча система діє СТРОГО  в рамках  ЧІТКО запропонованої технічними умовами послідовності дій.

Поза форумом

 

#7 2005-11-22 17:44:30

partisan
Олімпієць
Звідки: Киев
Зареєстрований: 2005-11-04
Повідомлень: 180

Re: Разве программа должна читать все данные????

Журі NetOI-2005 - Пасіхов написав:

Перевіряюча система діє СТРОГО  в рамках  ЧІТКО запропонованої технічними умовами послідовності дій.

Ради интереса: а почему тестилка требует считывание ВСЕХ данных. Почему ей не всё равно?

Поза форумом

 

#8 2005-11-22 21:16:26

hidden_u
Олімпієць
Звідки: Warszawa, Polska
Зареєстрований: 2005-10-22
Повідомлень: 63

Re: Разве программа должна читать все данные????

нет, господа, тут проблема глубже. данная проверяющая система НЕ может проверять все ли считанно с буфера, по очевидным мне  причинам.

причиной сомнения для вас будет следующее.
собственно если взять вашу программу и поредактироать таким образом:

var
  K, k2, k4, v, t, i, ans : Longint;
  A : array [1..40000] of Longint;
begin
  Read(k);
  k2 := k div 2;
  k4 := k div 4;
  v := 0;
  for i := 1 to k2 do
  Read(A[i]);
  for i := 1 to k2 do
  begin
    Inc(v, A[i]);
  end;
  if v = k4 then
    ans := 0
  else
    for i := 1 to k2 do
    begin
      Read(A[k2+i]);
      if (A[k2+i]<>0) xor (A[i]<>0) then
        if A[i] = 0 then
          Inc(v)
        else
          Dec(v);
      if v = k4 then
      begin
        ans := i;
        Break;
      end;
    end;

{  for i := ans+1 to k2-10 do
    Read(A[1]);}

   if ans+1 <= k2 then while(true) do;

  if (ans = 0) or (ans = k2) then
    Write('1 ', k2, ' ', k2+1)
  else
    Write('2 ', ans, ' ', ans+1, ' ', ans+k2, ' ', ans+k2+1);
end.


получим ТЛЕ на все тесты. т.е. все тесты требуют дочитать ввод. из чего следует что проверяющая система НЕ проверяет все ли считанно. а значит проблемма глубже, где именно мне сложно сказать.

я бы попросил Ю. Я. Пасихова посмотреть что там происходит, возможно это вылазит и в других ситуациях.

спасибо.

Поза форумом

 

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

Powered by Likt
© Copyright 2002–2009 Likt