Пройдет ли решение по времени? Просто о скорости кода. Big O notation
dragon286289
13.12.2025
Вы написали решение, отправили его, а система выдала TL (Time Limit Exceeded). Это значит, программа работала слишком долго. Обычно лимит времени на задачу это ~1 секунда. За это время компьютер успевает сделать примерно операций.
Чтобы не тратить время на заведомо медленные решения, нужно уметь оценивать их скорость. В программировании это называют оценкой асимптотики и записывают через . Она показывает порядок количества операций в зависимости от размера входных данных . Асимптотика описывает только скорость роста нагрузки. значит, что время растет прямо пропорционально данным. При этом количество действий на один элемент может быть разным (это называют константой), но если оно не зависит от , сложность всё равно остается линейной.
Примеры операций и их стоимость в простейших операциях
- Доступ к элементу массива: — одно чтение памяти в ячейке.
- Бинпоиск / set / map: сравнений/операций. Растет очень медленно. Для это всего ~18 операций.
Пример:
Допустим, нам дан массив из чисел.
- Быстро: . Один проход по массиву. операций. Мгновенно.
- Тоже быстро: . Сортировка. операций. Легко укладывается в секунду.
Шпаргалка
Смотрите на максимальное в условии задачи:
- : Нельзя вложенные циклы. Только линейное решение или сортировка .
Главное правило: прикиньте число операций. Если оно больше — ищите другой алгоритм. Это сэкономит кучу времени на контестах!