<?php
while($s = fgets(STDIN)){
$input[]= $s;
}
$count = $input[0];
$nums = explode(' ', $input[1]);
foreach($nums as $value) {
$summ = $summ + $value;
}
rsort($nums);
foreach($nums as $value) {
$result++;
$res = $res + $value;
if ($res > ($summ/2)) {
echo $result;
die();
}
}
?>
Так выглядит мое решение к задаче "Близнецы" (Codeforces Round #111 (Div. 2)). Столкнулся с проблемой, при отправке моего решения задачи, получаю ошибку на тесте #21, согласно статусу вывод: 31, вместо 30. При этом если запустить отсюда: Запуск, то вывод правильный: 30. Вот мне и интересно, косяк у меня?
Результаты при отправлении:
Test: #21, время: 30 мс., память: 6908 КБ, код возврата: 0, код возврата чекера: 1, вердикт: WRONG_ANSWER
Ввод
100
3 4 8 10 8 6 4 3 7 7 6 2 3 1 3 10 1 7 9 3 5 5 2 6 2 9 1 7 4 2 4 1 6 1 7 10 2 5 3 7 6 4 6 2 8 8 8 6 6 10 3 7 4 3 4 1 7 9 3 6 3 6 1 4 9 3 8 1 10 1 4 10 7 7 9 5 3 8 10 2 1 10 8 7 10 8 5 3 1 2 1 10 6 1 5 3 3 5 7 2
Вывод
31
Ответ
30
Протокол тестирования
wrong answer 1st words differ - expected: '30', found: '31'
Результаты при запуске:
Ввод
100
3 4 8 10 8 6 4 3 7 7 6 2 3 1 3 10 1 7 9 3 5 5 2 6 2 9 1 7 4 2 4 1 6 1 7 10 2 5 3 7 6 4 6 2 8 8 8 6 6 10 3 7 4 3 4 1 7 9 3 6 3 6 1 4 9 3 8 1 10 1 4 10 7 7 9 5 3 8 10 2 1 10 8 7 10 8 5 3 1 2 1 10 6 1 5 3 3 5 7 2
Вывод
30
Использовано: 10 мс, 6908 КБ
Почитайте вот эту ветку, возможно, Вам поможет.
Не знаю в чем ошибка, на этом тетсе, но решение очевидно неверное if ($res > ($summ/2)) что такое summ/2 ? должно быть if (res > summ — res). А понял :) это одно и то же. А деление целочисленное? Если да, то плохо, если нет, то все равно плохо из-за неточности вещественных чисел.