Подготовка к олимпиадам: быстрый ввод-вывод
Быстрый ввод через sys.stdin, ловушки Python на олимпиадах и checklist.
Python лаконичен, но медленнее C++ в десятки раз. Чтобы он выживал на олимпиадах, нужно знать несколько приёмов.
Первый и главный — быстрый ввод. Обычный input() медленный; при больших объёмах данных (сотни тысяч строк) решение может не уложиться в лимит только из-за чтения. Замена — sys.stdin.
Python
Шаблон с быстрым вводом. Введите: 4, затем 10 20 30 40
Что здесь важно:
• input = sys.stdin.readline — подменяет медленный input быстрым (осторожно: readline оставляет в конце символ перевода строки, для чисел это не мешает, для строк используйте .strip());
• ответы копятся в списке и выводятся одним print через join — тысячи отдельных print работают заметно медленнее.
Ловушки Python, о которых нужно знать заранее:
1. Глубокая рекурсия падает: лимит по умолчанию около 1000 вызовов. Увеличивайте sys.setrecursionlimit(300000) или переписывайте на цикл.
2. Если алгоритм правильный, но время всё равно не проходит, — сначала ищите лишний цикл у себя, и только потом вините язык.
3. Целые числа не переполняются — об этом в Python можно не думать вовсе.
Checklist перед отправкой:
1. Крайние случаи: n = 1, пустые данные, отрицательные числа.
2. Правильные ли // и % (а не /)?
3. Формат вывода точно совпадает с условием?
Курс завершён — поздравляем! Откройте раздел «Обучение» и начинайте «Путь олимпиадника» с Уровня 1. Удачи!