Подготовка к олимпиадам: быстрый ввод-вывод

bufio: быстрый ввод-вывод и олимпиадный шаблон на Go.

fmt.Scan читает посимвольно и на больших данных безнадёжно медленный. Олимпиадный стандарт в Go — буферизованный ввод-вывод из пакета bufio: • bufio.Reader + fmt.Fscan — быстрое чтение; • bufio.Writer + fmt.Fprintln — быстрый вывод; в конце обязателен writer.Flush(), иначе буфер не будет напечатан (и вы получите Wrong Answer при правильном решении).
Go

Олимпиадный шаблон. Введите: 4, затем 10 20 30 40

Что важно в шаблоне: • reader и writer объявлены на уровне пакета — доступны из любой функции; • defer writer.Flush() гарантирует сброс буфера при выходе из main — писать эту строку первой стало ритуалом олимпиадников на Go; • fmt.Fscan(reader, &x) — тот же Scan, но из быстрого буфера. Checklist олимпиадника на Go: 1. Не забыт ли writer.Flush()? (defer решает это раз и навсегда) 2. int в Go 64-битный — переполнения int32 можно не бояться, но произведения трёх больших чисел всё равно проверяйте. 3. len(s) — байты; для кириллицы и юникода работайте через []rune. 4. Неиспользуемые переменные и импорты не скомпилируются — удаляйте.
Курс завершён — поздравляем! Откройте раздел «Обучение» и начинайте «Путь олимпиадника» с Уровня 1: сложность алгоритмов, задачи на реализацию и базовая математика. Удачи на соревнованиях!
Доска