profile
Размещено 4 года назад по предмету Информатика от regressor04

Большая политика
В некотором королевстве есть N провинций. Король пожелал объединить их все под своей самодержавной властью. Естественно, чтобы никто не догадался об этих планах, он будет это делать поэтапно, а именно: раз в год он будет объединять какие-то две провинции в одну. Чтобы жителям обеих провинций не было обидно, новому территориальному образованию будет присвоено новое название, которое будет отличаться от обоих старых названий. Естественно, это потребует выпуска новых паспортов для жителей обеих провинций.

Очевидно, что если в первой провинции pi жителей, а во второй — pj жителей, то для них надо выпустить pi+pj новых паспортов.

На следующий год король объединяет ещё какие-то две провинции. И так далее до тех пор, пока вся территория королевства не будет объединена в одну большую "провинцию". Определите, какое наименьшее количество новых паспортов придётся выпустить, если король будет объединять провинции оптимально с этой точки зрения.

Входные данные

В первой строке вводится число N (натуральное, не превышает 105) — количество провинций. Затем вводятся N чисел — количество жителей каждой провинции (натуральное, не превосходит 109). Гарантируется, что изначально в королевстве хотя бы две провинции.

Выходные данные

Выведите единственное число — количество новых паспортов, которые придётся выпустить.

Примеры
Ввод
2
2 6
Вывод
8
Ввод
3
6 2 4
Вывод
18
Решать на C++!

  1. Ответ на вопрос
    Ответ на вопрос дан fkid2006

    Ответ:

    #include <iostream>

    #include <set>

     

    typedef long long ll;

     

    int main()

    {

       std::multiset<ll> st;

     

       {

           int n;

           ll population;

           std::cin >> n;

           for(int i = 0; i < n; ++i)

           {

               std::cin >> population;

               st.insert(population);

           }

       }

     

       ll result = 0;

       while(st.size() > 1)

       {

           ll a = *st.begin();

           ll b = *(++st.begin());

           st.erase(st.begin());

           st.erase(st.begin());

     

           a += b;

           result += a;

           st.insert(a);

       }

     

       std::cout << result;

     

       return 0;

    }

    Объяснение:

    Решил не я!

    1. Ответ на вопрос
      Ответ на вопрос дан arbeite
      Решил не он, как еще не нашлось модератора который бы удалил ответ??
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.