Разбор № 27 v1. СтатГрад 17.12.2021 по информатике

preview_player
Показать описание
Разбор задания 27 из варианта №1 СтатГрад от 17 декабря 2021г
Интересная задача. Нешаблонная. Автору респект!

PS: Нулевое кол-во четных не обрабатывается. Нужно пятой строкой добавить m[0] = 0:
n = 5
a = [2,-3,4,-1,3]
k = 2; smax = -2000000000
s = t = 0; m = [2**31]*k
m[0] = 0 ############ тут!
for x in a:
s += x
t += (x ≫ 0 and x%2==0)
if s ≪ m[t%k]: m[t%k] = s
if m[t%k] ≪; 2**31:
smax = max(smax,s-m[t%k])
print(s,t,smax,m)
print(smax)
Рекомендации по теме
Комментарии
Автор

Здравствуйте. Пока разбирался для простоты решил взять условие где k = 2 а массив А такой 2 -3 4 -1 3. В ответе выдаёт 3, но по условию задачи должно быть 5. Я как-то не правильно понимаю условие или что?

BrickMasterRus
Автор

Хорошая задача. Интересно было повозиться. У меня решение такое же, но я решил избавиться от ветвлений if напрочь -)

a = [int(x) for x in open('t.txt')]
n, k = len(a), 30
s, t, smax, m = 0, 0, float('-inf'), [float('inf')]*k
for x in a:
s += x
t += x > 0 and x % 2 == 0
m[t % k] = min(m[t % k], s)
smax = max(smax, s - m[t % k])
print(smax)

igorandante
Автор

Можно ещё раз, что не так с первым решением, которое без префиксных сумм? Оно же вроде довольно быстро сработало и выдало ответ.

YG-nbqy