JustCaptain kod-buduschego

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

JustCaptain · 2 недели назад fd53ca53a7acd6747e1bbff7184ba2bca75932b7
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)