|
|
|
|
|
|
|
Вернуться
| 1 Меньшиков Фёдор Владимирович, 12 сентября 2022 г. 19:41:01 | |
|
Ограничение по памяти в 224-й задаче поднято с 16 до 128 Мбайт. Простой способ чтения теперь работает.
|
|
|
| 2 Александр, 07 сентября 2022 г. 21:39:39 | |
Не уверен, что сделал так как надо, но программа пролезла еле-еле :) Жаль нельзя посмотреть на другие лучшие решения n, s = input(), input() mx, mn = [], [] while len(s) > 20: *L, s = s.split(' ', maxsplit=10000) L = sorted([int(x) for x in L]) mn += L[:2] mx += L[-3:] L = sorted([int(x) for x in s.split()]) mn += L[:2] mx += L[-3:] mn.sort() mx.sort() print(max(mx[-3] * mx[-2] * mx[-1], mn[0] * mn[1] * mx[-1]))
|
|
|
| 3 Хворых Павел, 07 сентября 2022 г. 7:45:22 | |
|
У метода split есть параметр maxsplit, который позволяет нарезать не всю строку разом, а какую-то часть. Решение со считыванием всей строки через input() и её нарезкой с параметром maxsplit=5000 успешно проходит на Python 3.9.
|
|
|
| 4 Александр, 06 сентября 2022 г. 21:32:48 | |
|
Здесь ввод и обработка чисел кусочками по 50kb плюс сколько-то байт если последнее число разбилось посередине
|
|
|
| 5 Александр, 06 сентября 2022 г. 21:30:26 | |
Есть ли где статья или пример быстрого ввода/вывода на Python ? TLE из-за медленного ввода, или Memory limit из-за попытки сделать input().split() при 10^6 чисел После многих попыток программа прошла, но кажется такой корявой: import sys n = int(sys.stdin.readline()) a = [] mx1, mx2, mx3 = -30001, -30001, -30001 mn1, mn2 = 30001, 30001 while True: buf = sys.stdin.read(50000) if len(buf) == 0: break elif len(buf) == 50000 and buf[-1] != ' ': add = '' while True: nxt = sys.stdin.read(1) add = add + nxt if nxt == '' or nxt == ' ': break buf = buf + add lst = list(map(int, buf.split())) ... а дальше уже решение Можно ли ввод сделать лучше?
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |