Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Что за ерунда сегодня творится с системой? Код на плюсах (что GCC, что VC++) компилируется по две-три минуты, и работает непозволительно долго, ловит TLE.
1
  1  Иван Михнович, 14 мая 2015 г. 12:46:32
      Спасибо за ответ! В защиту iostream хочу сказать что он тормозит потому что вынужден синхронизироваться с сишной системой ввода-вывода. Если их расстыковать вызовом ios::sync_with_stdio(false) то разница в производительности незначительна. Иногда плюсовые потоки даже быстрее благодаря статической типизации (но это сильно зависит от реализации). Вот тут http://codeforces.com/blog/entry/5217?locale=ru есть интересные экспериментальные данные по теме.

Цена, которую приходится платить за "расстыковку" - необходимость сделать выбор и удовлетвориться чем-то одним: или stdio, или iostream. Иначе не избежать ужасных ошибок.
  2  Беляев Сергей Николаевич, 14 мая 2015 г. 2:03:12
      12 мая 2015 г. я внес корректировку в тестирующие системы, т.к. некоторые задачи не проходили по времени. Возможно, что стоит еще "ускорить" тестирующие системы. Разумеется, freopen не должен замедлять выполнение программ, т.к. по сути в любом случае все реализовано с файлами, которые обрабатываются на виртуальном диске (в ОЗУ) для повышения быстродействия. А вот использование scanf и printf вместо cin и cout при большом объеме читаемых и особенно выводимых данных может существенно ускорить выполнение программы.
  3  Иван Михнович, 13 мая 2015 г. 15:59:42
      Сейчас провёл маленький эксперимент. Для задачи 453 отправил своё решение №4221650 дважды: первый раз убрал две строчки с freopen'ами, второй раз без изменений. Позавчера оно получило TLE на 13 тесте, 1,304 с.
Сегодня два Accepted. 0,454 и 0,474 секунды соответственно.

Значит я был прав и всё-таки в этот день в это время с системой было что-то не так. И во-вторых подключение к файлам через freopen никак существенно не замедляет выполнение программы.
  4  Беляев Сергей Николаевич, 13 мая 2015 г. 3:12:08
      С этого месяца на данном сайте можно решать задачи без работы с файлами. Подробности читайте в разделе "Работа в системе".
  5  Попутников Георгий Сервгеевич, 12 мая 2015 г. 19:37:56
      перезалей и не забывай про то как посчитать время работы своей программы O()
  6  Иван Михнович, 12 мая 2015 г. 19:34:52
      Обычно я открываю файлы через freopen, потом вызываю std::ios::sync_with_stdio(false) и читаю/пишу через iostream. До проблем с этой задачей всё великолепно работало.
  7  Попутников Георгий Сервгеевич, 12 мая 2015 г. 14:11:43
      #include <stdio.h>
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
  8  Попутников Георгий Сервгеевич, 12 мая 2015 г. 14:09:04
      freopen?
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru