Дети в детском саду получили большой мешок с конфетами. Их в

Дети в детском саду получили большой мешок с конфетами. Их в мешке М штук. Решено, что конфеты обязаны быть распределены посреди N малышей. Каждый ребенок указал количество конфет, которое он желает. Если ребенку не достанется такового количество конфет, которое он желает, он будет обижен. Гнев будет равным квадрату количества желаемых, но не приобретенных конфет. Например, если Вася утверждает, что желает 32 конфеты, но получает лишь 29, ему не хватает 3 конфет, поэтому его гнев будет одинаковым 9. Помогите распределить конфеты так, чтоб сумма ребяческого гнева была малой. Напишите метод.

Задать свой вопрос
Николай
на каком языке
Степан Епищенков
Обычно под алгоритмом все поголовно почему-то имеют в виду блок-схему.
Борис Шкребиенко
Мило. Оптимизационная задача. Можно решать, к примеру, симплекс-методом. Но я сомневаюсь, что кто-то будет здесь расписывать его метод.
Кира Дубновская
C++
Оленька Бирун
метод я имел ввиду написать что да как делать
Вячеслав Лукьянцев
У Вас типичная оптимизационная задачка. Гyглите методы решения таких задач и избирайте любой. Но мыслю, оно Для вас не по зубам. Не знаю, где Вы такового монстрика вынули.
Семён Дащинский
Не по зубам говорите
Есения Михолевич
Ну не знаю, раз сюда расположили вопрос...
1 ответ

Решил алчным алгоритмом

include lt;bits/stdc++.hgt;

using namespace std;

int ans,n,a[10101],m,b[10101];

main ()

   cin gt;gt;n gt;gt;m;

   for (int i = 1; i lt;= n; i++)

    cin gt;gt;a[i];

   sort(a + 1, a + n + 1);

for (int i = 1; i lt;= n; i++)

     if (a[i] lt;= m) m-=a[i];

     else

     b[i] = pow(a[i] - m,2);  

for (int i = 1; i lt;= n; i++)

 if (b[i]) ans+=b[i];

cout lt;lt;ans;

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт