Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3466668
А
Аноним
10 октября 2025 05:28 · публичный вопрос
А
Аноним

Дан массив из натуральных чисел. Можно прибавлять к элементам по единичке. Других изменений элементов массива делать нельзя. За какое минимальное количество таких операций можно…

Запрос пользователя

Дан массив из натуральных чисел. Можно прибавлять к элементам по единичке. Других изменений элементов массива делать нельзя. За какое минимальное количество таких операций можно сделать все элементы одинаковыми? В первой строке дано число N — количество элементов в массиве. Затем в N строках даны N чисел. Требуется вывести одно число — ответ на вопрос задачи.

Ответ нейросети
10 октября 2025 05:28

Понятно. Задача говорит: можно увеличивать элементы на 1 за операцию; чтобы привести все элементы к одному значению, выбираем минимально возможную цель и считаем количество необходимых прибавок.

Пояснение и решение

  • Пусть максимальное значение в массиве будет M, а сумма элементов — S, и количество элементов — N.
  • Любая целевая величина T, к которой приводим все элементы, удовлетворяет T ≥ M (поскольку можно только увеличивать).
  • Общее число операций при выборе T равно sum(T - a_i) = N*T - S.
  • Это выражение минимально при минимальном допустимом T, то есть T = M.
  • Следовательно, минимальное количество операций равно N*M - S.

Алгоритм

  • Найти M = max(a_i) и S = sum(a_i).
  • Ответ = N*M - S.

Сложность

  • Время: O(N) для одного прохода по массиву.
  • Память: O(1) дополнительно.

Пример

  • Массив: [1, 2, 3, 4], N = 4, M = 4, S = 10.
  • Ответ: 4*4 - 10 = 6. Необходимо увеличить элементы на суммарно 6 раз.

Код-пример (Python) def min_operations(arr): if not arr: return 0 M = max(arr) S = sum(arr) N = len(arr) return N * M - S

чтение входа (N затем N чисел)

import sys data = list(map(int, sys.stdin.read().split())) if not data: print(0) else: N = data[0] a = data[1:1+N] print(min_operations(a))