Добавить авторские задачи по массивам
Родитель:
53f23cf
· сравнить с родителем
1 файл
-
Показать разницуСкрыть разницу
1 +# 🟢 Intern — массивы 2 + 3 +Четыре авторские задачи на индексацию, `std::vector` и аккуратное использование памяти. 4 + 5 +## 1. Температурный диапазон 6 + 7 +Метеостанция записала температуру за `N` дней. Найдите минимум и максимум, не сохраняя весь ряд. 8 + 9 +**Ввод:** `N` (`1 ≤ N ≤ 10^6`), затем `N` чисел `t_i` (`-10^6 ≤ t_i ≤ 10^6`). 10 + 11 +**Вывод:** минимум и максимум через пробел. 12 + 13 +**Пример:** 14 +'''text 15 +5 16 +12 -3 8 8 21 17 +''' 18 +'''text 19 +-3 21 20 +''' 21 + 22 +**Требование:** время `O(N)`, дополнительная память `O(1)`. 23 + 24 +## 2. Сжать повторы 25 + 26 +Дан отсортированный массив кодов событий. Оставьте по одному элементу из каждого блока одинаковых соседних значений. Выведите количество оставшихся значений и сами значения. Изменять массив нужно на месте. 27 + 28 +**Ввод:** `N` (`0 ≤ N ≤ 10^5`), затем `N` неубывающих чисел (`|a_i| ≤ 10^9`). 29 + 30 +**Вывод:** длина результата, затем результат. 31 + 32 +**Пример:** 33 +'''text 34 +7 35 +2 2 2 5 5 8 10 36 +''' 37 +'''text 38 +4 39 +2 5 8 10 40 +''' 41 + 42 +**Требование:** `O(N)` времени и `O(1)` дополнительной памяти. 43 + 44 +## 3. Циклическая доставка 45 + 46 +Лента с `N` посылками сдвигается вправо на одну позицию: последняя посылка становится первой. Выполните `K` таких сдвигов и выведите порядок. 47 + 48 +**Ввод:** `N` и `K` (`1 ≤ N ≤ 2·10^5`, `0 ≤ K ≤ 10^18`), затем `N` меток. 49 + 50 +**Вывод:** массив после сдвигов. 51 + 52 +**Пример:** 53 +'''text 54 +5 7 55 +1 2 3 4 5 56 +''' 57 +'''text 58 +4 5 1 2 3 59 +''' 60 + 61 +**Требование:** `O(N)` времени и `O(1)` дополнительной памяти; не создавайте копию массива. 62 + 63 +## 4. Сколько раз рос буфер? 64 + 65 +Динамический массив начинает с вместимости `1`. При нехватке места буфер удваивается, все элементы копируются в новое хранилище. Для `N` добавлений найдите число расширений и общее количество скопированных элементов. Моделировать отдельные добавления нельзя. 66 + 67 +**Ввод:** `N` (`0 ≤ N ≤ 10^18`). 68 + 69 +**Вывод:** количество расширений и число скопированных элементов. 70 + 71 +**Пример:** 72 +'''text 73 +9 74 +''' 75 +'''text 76 +4 15 77 +''' 78 + 79 +**Пояснение:** вместимости `1 → 2 → 4 → 8 → 16`; копируются `1+2+4+8=15` элементов. Учтите переполнение при удвоении. 80 + 81 +--- 82 + 83 +[⬅️ К материалу по массивам](README.md)