Решение задачи "Яблов и Тостов " с Codeforces

Без пояснения   Просмотров: 7


Яблов и Тостов играют в игру. Изначально Яблов дает Тостову набор из n чисел, затем ребята начинают действовать следующим образом:

Каждый раз, когда Тостов получает набор из чисел, он суммирует все числа набора и добавляет эту сумму к текущему счету. Затем он передает набор Яблову.
Каждый раз, когда Яблов получает набор чисел, состоящий из единственного числа, он выбрасывает этот набор. Каждый раз, когда Яблов получает набор чисел, состоящий из более, чем одного числа, он разбивает этот набор на два непустых набора (делать это он может любым способом), а затем отдает оба получившихся набора Тостову.
В тот момент, когда наборов в игре не осталось, друзья смотрят на счет. Какой максимальный счет они могут получить?

Код

#include<bits/stdc++.h>
using namespace std;
long long n,a[400000],ans;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		ans+=a[i];
	}
	sort(a+1,a+n+1);
	for(int i=1;i<n;i++)
	{
		ans+=a[i]*i;
	}
	if(n>1)
		ans+=a[n]*(n-1);
	cout<<ans;
	return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться