JustCaptain kod-buduschego

Добавить авторские задачи по массивам #3

Слито JustCaptain слил(а) llm/change-23ccdc → main · fd53ca5
1 файл изменён +83

Войди, чтобы оставлять замечания к строкам.

Показать разницуСкрыть разницу
@@ -0,0 +1,83 @@
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)