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]
>>>
Xaker_Two
Мыслитель
(5038)
4 года назад
256 метров на это?! оно в 1 поместится с запасищем и к слову последнего пациента могут не принять (105 < 106)? подсказки 5 - размер массива, количество итераций на 1 меньше размера, время ожидания текущего = время приема + время ожидания предыдущего, для получения результата нужна только одна переменная
1.0 с
ограничение по памяти на тест
256 МБ
ввод
стандартный ввод
вывод
стандартный вывод
Айболит сидит под деревом и принимает животных. Про каждого из животных известно, сколько времени нужно для его приема. Айболит не пьет, не ест и не спит — всё принимает и принимает больных, потому что он очень добрый и ответственный доктор. Айболит хотел бы организовать прием так, чтобы каждый пациент провел в очереди как можно меньше времени. Но для каждого зверя это сделать невозможно, потому что все хотят пройти первыми без очереди. Айболит все же придумал в какой очередности нужно принимать зверей, чтобы суммарное их ожидание в очереди было бы минимальным. Рассчитайте и вы, какое минимальное суммарное время проведут животные в очереди по плану Айболита.
Входные данные
В первой строке дано одно целое число n
(1≤n≤106) — количество пациентов. Во второй сроке n натуральных чисел ai (1≤ai≤105) — время приема i
-го животного.
Выходные данные
Выведите единственное число — минимальное суммарное время, которое животные проведут в ожидании приёма.
Система оценки
Пример
Входные данные
Скопировать
5
2 2 2 2 2
Выходные данные
Скопировать
20