Помогите пожалуйста.
Одним прекрасным вечером, рассказывая очередную утиную историю своим любимым внукам — Билли, Дилли и Вилли, Скрудж МакДак вспомнил, как он любил играть с кубиками в детстве. Захваченный воспоминаниями, Скрудж предложил ребятам пособирать башенки из кубиков. Все с радостью поддержали его идею.
Всего утята собрали n
башенок. В i
-й башенке оказалось ai
кубиков, поставленных друг на друга. Скрудж заметил, что башенки имеют разную высоту. Ему, как большому любителю порядка, это не понравилось, и он решил исправить ситуацию. Скрудж решил, что он будет перекладывать, добавлять и убирать кубики так, чтобы все башенки оказались одинаковой высоты. За одно действие Cкрудж может переложить кубик с одной башенки на другую, убрать кубик из конструкции, или взять кубик из набора и положить его на какую-нибудь башенку. Кубиков в наборе неограниченное количество. Высота башенки определяется как количество кубиков в ней.
Помогите Скруджу посчитать, какое минимальное количество действий ему понадобится для того, чтобы сделать все башенки одинаковой высоты!
Формат входных данных
В первой строке входного файла даны два числа n
(1≤n≤1000
) — количество башенок. Во второй строке входного файла дано n
чисел ai
(1≤ai≤1000
) — количество кубиков в i
-й башенке.
Формат выходных данных
В единственной строке выходного файла выведите единственное число — ответ на задачу.
входные данные
5
3 2 2 5 4
выходные данные
3
C/C++
Задача на c++
#include
#include
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
vector a(n);
for(int i = 0; i < n; ++i) cin >> a[i];
int sum = accumulate(begin(a), end(a), 0);
int h = round(static_cast(sum) / n);
int d = abs(sum - h * n);
int deltas = accumulate(begin(a), end(a), 0, [h](int s, int i){ return s + abs(i - h); });
cout
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
vector bash(n);
for (auto& i : bash) cin >> i; //ввод башен
int opt=0; //оптимальная высота башни...
for (auto& i : bash) opt += i;
opt = round((double)opt / n);//...равна средне-арифметич с округлением в ближайшую сторону
int dif = 0; //несоответствие...
for (auto& i : bash) dif += abs(opt - i);//...равно суммарной разнице высот
cout
Сергей Ахмедханов
Не правильно считал. Версия 1.1:
from statistics import mean
def get_average(numbers):
return mean(numbers)
width = int(input())
numbers = list(map(int, input().split()))
height = round(get_average(numbers))
all_qubes = 0
for i in numbers:
all_qubes += i
S = height * width
in_s = 0
out_s = 0
for i in numbers:
if i < height:
in_s += height - i
elif i > height:
out_s += i - height
if out_s > in_s:
throw_out = out_s - in_s
print(in_s + throw_out)
else:
print(out_s + in_s - out_s)