Предмет: Информатика,
автор: Anapheron
Дети в детском саду получили большой мешок с конфетами. Их в мешке М штук. Решено, что конфеты должны быть распределены среди N детей. Каждый ребенок указал количество конфет, которое он хочет. Если ребенку не достанется такого количество конфет, которое он хочет, он будет обижен. «Гнев» будет равным квадрату количества желаемых, но не полученных конфет. Например, если Вася утверждает, что хочет 32 конфеты, но получает лишь 29, ему не хватает 3 конфет, поэтому его «гнев» будет равным 9. Помогите распределить конфеты так, чтобы сумма детского гнева была минимальной. Напишите алгоритм.
pryhodzichdavid:
на каком языке
Ответы
Автор ответа:
0
Решил жадным алгоритмом
#include <bits/stdc++.h>
using namespace std;
int ans,n,a[10101],m,b[10101];
main () {
cin >>n >>m;
for (int i = 1; i <= n; i++)
cin >>a[i];
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; i++)
if (a[i] <= m) m-=a[i];
else
b[i] = pow(a[i] - m,2);
for (int i = 1; i <= n; i++)
if (b[i]) ans+=b[i];
cout <<ans;
}
Похожие вопросы
Предмет: Математика,
автор: tupoja896
Предмет: Геометрия,
автор: gsushsushs
Предмет: Химия,
автор: mariazemba3
Предмет: История,
автор: aksana1414
Предмет: География,
автор: dzhekaklimova2