На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Вопрос к жюри:
Задача 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 нельзя было
Поза форумом
Джулгаков Дмитрий написав:
Вопрос к жюри:
Задача CIRCUIT:
Поэтому вопрос:
Получается, что если программа не читает всех входных данных, то эти данные портят следующие тесты????? Или как понимать эту ситуацию?
(
Понимать так, как написано в правилах- нужно СТРОГО выпонять все технические условия. - обычное дело при аппаратной проверке
Поза форумом
Технические требования я строго выполнял, но я НИГДЕ не видел, что программа должна читать с экрана ВСЕ данные! Насколько я понимаю, система проверки перенаправляет ввод-вывод в файл и поэтому если программа не прочитала всех данных, но выдала правильный ответ, то все должно быть ОК. Хотя как видно из моего примера, это не так. Кстати, не только я пролетел на этом моменте. Довольно много участников набрало 16 балов - скорее всего изза этого.
Поэтому прошу объяснить почему не работает программма, которая чичает не все данные, но выдает ПРАВИЛЬНЫЙ ответ.
Заранее благодарен.
Поза форумом
Джулгаков Дмитрий написав:
Технические требования я строго выполнял, но я НИГДЕ не видел, что программа должна читать с экрана ВСЕ данные! Насколько я понимаю, система проверки перенаправляет ввод-вывод в файл и поэтому если программа не прочитала всех данных, но выдала правильный ответ, то все должно быть ОК. Хотя как видно из моего примера, это не так. Кстати, не только я пролетел на этом моменте. Довольно много участников набрало 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
Похоже, что технические условия ОДНОЗНАЧНО указывают на необходимость чтения ВСЕХ входных данных
Поза форумом
Журі 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)
Поза форумом
Та немає тут, шановний Влалислав, ніякого сюрпризу. Є конфлікт між певним досвідом та необхідністю чітко виконувати техннічні умови.
Підкажіть, будь ласка, що сказанов технічних умовах неоднозначно? Що потрібно було оговорювати окремо?
Технічні умови: Програма читає з клавiатури кiлькiсть ланок k, а далi - k чисел 0 або 1 (0 - срiбна ланка, 1 -
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
золота). Всi числа вводяться одним рядком через пропуски. Програма виводить на екран єдине число -
^^^^
мiнiмальну кiлькiсть розрiзiв та номери ланок, мiж якими зроблено розрiзи. Перший розрiз повинен бути як можна ближче до початку ланцюга. N < 10000
Перевіряюча система діє СТРОГО в рамках ЧІТКО запропонованої технічними умовами послідовності дій.
Поза форумом
Журі NetOI-2005 - Пасіхов написав:
Перевіряюча система діє СТРОГО в рамках ЧІТКО запропонованої технічними умовами послідовності дій.
Ради интереса: а почему тестилка требует считывание ВСЕХ данных. Почему ей не всё равно?
Поза форумом
нет, господа, тут проблема глубже. данная проверяющая система НЕ может проверять все ли считанно с буфера, по очевидным мне причинам.
причиной сомнения для вас будет следующее.
собственно если взять вашу программу и поредактироать таким образом:
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.
получим ТЛЕ на все тесты. т.е. все тесты требуют дочитать ввод. из чего следует что проверяющая система НЕ проверяет все ли считанно. а значит проблемма глубже, где именно мне сложно сказать.
я бы попросил Ю. Я. Пасихова посмотреть что там происходит, возможно это вылазит и в других ситуациях.
спасибо.
Поза форумом