Три задачи, в которых очевидная программа верна, но слишком медленна. Прежде чем что-то писать, посчитайте шаги для самого большого ввода и сравните их с 10⁸ в секунду.
- Потерянная карточка:
Nдо 10⁵, поэтому искать каждое число среди карточек — это около 10¹⁰ шагов. Пометьте карточки в вектореseenили вычтите их сумму изN · (N + 1) / 2— вlong long. - Выравнивание массива: не прибавляйте по 1 — ответ может быть около 10¹⁴.
Каждый элемент должен дорасти до максимума, поэтому сложите
mx - a[i]вlong long. - Циклический сдвиг массива 2: сдвиг на одно место, повторённый
kраз, — этоn · kшагов. Ставьте каждый элемент сразу на его место,b[(i + k) % n] = a[i], или выведите сначала последниеkэлементов, а потом остальные.