Руки кривые, можете не смотреть. Полезной инфы здесь не много.
Пытаюсь дорешать задачу с командной neerc, которая была 20 октября. Задача B "Берляндский футбольный союз". Алгоритм вроде правильный, да и реализован тоже вроде верно, НО выдает ВА на 40 тесте.
Я скачал тесты с сайта neerc и пробовал запустить локально. Но во-первых программа выдает Segmentation fault, во-вторых она выпадает в RE только при n=84439 или n=100000. Причем RE дает не алгоритм, а ввод чисел. Ни scanf, ни cin ситуацию не меняют.
2417577 Вот ссылка на решение, всякие процедуры можете не смотреть, валится в main на строчке scanf("%d %d %d",&va, &vb, &vc);
http://ideone.com/b8inBF Тот же код на ideone вместе с тестом + закомментил не важные процедуры.
Если не сложно, может кто-то посмотреть на этот код и сказать в чем ошибка?
P.S. Алгоритм правильный, глючит только ввод, вот подтверждение 2417838. Решение с заглушкой на эти два теста. И тот же код на ideone.
пользователи, не решившие эту задачу, не имеют доступа к просмотру ваших посылок.
судя по всему, на вводе этот код падает, потому что ideone обрезал инпут, вероятно, там есть ограничения на его объём. у меня под MSVS 2010 код 2417577 после увеличения стека на 40 тесте выводит 0 и возвращает 0.
А вот это интересней. Я вообще не понимаю, почему из-за увеличения стека он работает. Т.к. решения на codeforces комплиятся с опцией --stack=268435456
P.S. добавил строчку #pragma comment(linker, "/STACK:116777216") в программу и заслал под MS C++, но вердикт тот же 2418707. ideone
Заметил, что в выводе недовыведена цифра. Решил, что проблема может быть в выводе. о_О
Сократил вывод в 100 раз:
http://diffchecker.com/gOhFXqH8
Слева код падает, справа — не падает.
Как бы вывод я добавлял для того, чтобы понять где именно он валится. (Всякие puts("OK") и т.д.). Вопрос в том, что код без всяких printf ( то есть нормальное решение) вылетает в RE на двух тестах, при определенном значении n. И в то же время на ВСЕХ остальных тестах оно работает. Вот ссылка на код который прошел 49 тестов из 51. http://ideone.com/x7rBTe
Может там просто числа как-то криво записаны или какой-нибудь кривой символ в инпуте? Если ты сдал задачу, можно тесты через FTP посмотреть. Попробуй также сдать на Java. Несколько раз уже проскакивала информация, что в ИТМО не пишут валидаторы.
Тесты я скачал с сайта neerc, а т.к. эта задача добавлена в тренировки, то я думаю тесты там те же. На Java переписать не смогу, т.к. просто не знаю язык. И мне ответили ниже, что проблема может быть в самом алгоритме.
А кстати, как смотреть тесты через FTP? Раньше никогда этим не пользовался.
http://mirror.codeforces.com/blog/entry/3676#comment-75059
если в приложенной Вами в P.S. заглушке поставить отсечения уже только после ввода и после содержательной части решения, это зайдёт: 2418797. WA 40 вызвано неверным ответом.
Спасибо, еще раз убеждаюсь в том, что сначала надо искать откуда руки растут у себя, а потом уже искать баги в компиляторах. Все оказалось очень банально, я выставил маленькое значение максимума.
Вместо: ans = ans*1000*1000*100;
Надо: ans = ans*1000*1000*1000;
1 ноль, а столько мороки для всех, извините. И теперь также прояснилась ситуация с тем, почему у меня вылетало на локальной машине( похоже на маленький размер стека).
Еще раз спасибо fdoer , daftcoder, dalex за то, что помогли разобраться в ситуации.