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

Автор andreyv, 10 лет назад, По-русски

Как известно, C++ принимает, что программист всегда прав, и поэтому компиляторы C++ не вставляют в программу дополнительные проверки на, например, разыменование нулевого указателя или доступ вне границ массива. У этого есть хорошая сторона: программа на C++ выполняется максимально быстро, и плохая сторона: иногда мы проводим долгое время за отладкой, чтобы в конце найти какую-то глупую ошибку. Хотелось бы, чтобы компилятор подобные ошибки находил сам. И многие компиляторы это могут! В этом посте я расскажу о различных параметрах GCC, которые это делают. Эту тему ранее уже освещал zakharvoit в этой статье.

Все параметры, которые здесь будут приведены, надо добавлять к командной строке GCC. В различных IDE это можно сделать в настройках IDE или компилятора. Многие из параметров можно применять и с Clang (например, в Xcode). Для MSVC++, пожалуй, нет ничего лучше, чем Debug-режим и /W4.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +899
  • Проголосовать: не нравится

Автор andreyv, 12 лет назад, По-русски

Сегодня в 20:00 по Москве состоится TCO 2013 Algorithm Round 2A. Участвовать могут те, кто прошёл по результатам предшествовавших Round 1. Регистрация начинается за три часа до соревнования. Первые 50 мест из этого раунда проходят дальше в Round 3.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +63
  • Проголосовать: не нравится

Автор andreyv, 12 лет назад, По-русски

Div. 2 A — Драконы

Заметим, что если Кирито сражается с драконом, сила которого меньше силы Кирито, то Кирито ничего не теряет — наоборот, его сила увеличивается на целое неотрицательное число. Поэтому будем всё время выбирать какого-либо дракона с меньшей силой, чем у Кирито в данный момент, и сражаться с ним. Так будем продолжать до тех пор, пока не победим всех драконов (тогда ответ — «YES»), или пока не останутся только драконы, которых Кирито не может победить (тогда ответ — «NO»). Дракона на каждом шаге можно искать по-разному — как проходиться по всем драконам, так и сначала отсортировать драконов по возрастанию силы.

Сложность решения — O(n2) или . Пример решения: http://pastie.org/4897164 (сохранённая копия)

Полный текст и комментарии »

Разбор задач Codeforces Round 142 (Div. 1)
Разбор задач Codeforces Round 142 (Div. 2)
  • Проголосовать: нравится
  • +71
  • Проголосовать: не нравится

Автор andreyv, 12 лет назад, По-русски

Всем привет!

Хочу продолжить тему скорости ввода/вывода в C++, которую когда-то начал товарищ freopen. freopen сравнивал производительность двух способов ввода/вывода в C++: унаследованной от C библиотеки stdio (<cstdio>) и более новой библиотеки iostreams (<iostream>/…). Однако в этих тестах не было учтено, что iostreams можно значительно ускорить, включив некоторые оптимизации. Об их существовании уже неоднократно упоминалось на Codeforces (раз, два, три). Сейчас я написал софт, который сравнивает производительность stdio и iostreams на стандартном вводе/выводе с учётом этого.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +63
  • Проголосовать: не нравится