Блог пользователя mayhem

Автор mayhem, 13 лет назад, По-русски
<?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 КБ
  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Почитайте вот эту ветку, возможно, Вам поможет.

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится -11 Проголосовать: не нравится

Не знаю в чем ошибка, на этом тетсе, но решение очевидно неверное if ($res > ($summ/2)) что такое summ/2 ? должно быть if (res > summ — res). А понял :) это одно и то же. А деление целочисленное? Если да, то плохо, если нет, то все равно плохо из-за неточности вещественных чисел.