Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу по программированию

Тор Надо Ученик (103), закрыт 4 года назад
ограничение по времени на тест
1.0 с
ограничение по памяти на тест
256 МБ
ввод
стандартный ввод
вывод
стандартный вывод
Айболит сидит под деревом и принимает животных. Про каждого из животных известно, сколько времени нужно для его приема. Айболит не пьет, не ест и не спит — всё принимает и принимает больных, потому что он очень добрый и ответственный доктор. Айболит хотел бы организовать прием так, чтобы каждый пациент провел в очереди как можно меньше времени. Но для каждого зверя это сделать невозможно, потому что все хотят пройти первыми без очереди. Айболит все же придумал в какой очередности нужно принимать зверей, чтобы суммарное их ожидание в очереди было бы минимальным. Рассчитайте и вы, какое минимальное суммарное время проведут животные в очереди по плану Айболита.
Входные данные
В первой строке дано одно целое число n
(1≤n≤106) — количество пациентов. Во второй сроке n натуральных чисел ai (1≤ai≤105) — время приема i
-го животного.
Выходные данные
Выведите единственное число — минимальное суммарное время, которое животные проведут в ожидании приёма.
Система оценки

Пример
Входные данные
Скопировать
5
2 2 2 2 2
Выходные данные
Скопировать
20
Лучший ответ
Aleks Nots Просветленный (22643) 4 года назад
У меня получается чуть больше одной секунды

from random import randint
from timeit import default_timer as timer
from memory_profiler import memory_usage

A=[]
for _ in range(1000_000):
A.append(randint(1,100_000))

#A=[5,4,3,2,1]
#A=[1,2,3,4,5]
#A=[2,2,2,2,2]

start=timer()

A.sort()
print(timer()-start)
t=A[0]
T=0
for i in range(1,len(A)): T += t; t = t+A[i]
print(T)
print(timer()-start)
print(memory_usage())

===============
0.6925101959999997
16679916879511604
1.226193511
[59.6953125]
>>>
Остальные ответы
クマのプーさん Мудрец (15499) 4 года назад
халявщики летят косяками на йух
Xaker_Two Мыслитель (5038) 4 года назад
256 метров на это?! оно в 1 поместится с запасищем и к слову последнего пациента могут не принять (105 < 106)? подсказки 5 - размер массива, количество итераций на 1 меньше размера, время ожидания текущего = время приема + время ожидания предыдущего, для получения результата нужна только одна переменная
Похожие вопросы