Информатика, вопрос задал renathalimov71p2gare , 2 года назад

Ребят помогите с Олимпиадой по информатике​

Приложения:

Ответы на вопрос

Ответил dajex
1

Ответ:

n = int(input())

a = list(map(int, input().split()))

ans = []

k = 0

x = -1

for i in range(len(a)):

   if i < 2:

       ans.append(a[i])

   elif len(ans) > 1 and a[i] == ans[-1] and a[i] == ans[-2]:

       ans.pop()

       ans.pop()

       x = a[i]

       k += 3

   elif x == a[i]:

       k += 1

       continue

   else:

       x = -1

       ans.append(a[i])

print(k)

print(*ans)

Объяснение:

Задача решается с помощью структуры данных под названием стек. Мы кладем элементы в конец стека, и, когда видим, что три последних числа в стеке - одинаковы, то удаляем их и запоминаем удаленный элемент. Дальше если мы встречаем тот же элемент то не кладем в стек а просто увеличиваем счетчик. Если же следующий элемент оказался отличным от предыдущего удаленного, то кладем его в стек.


dajex: И если с отступами проблема, то напиши. Я тогда скрин кину.
renathalimov71p2gare: неверный ответ при оутпут
renathalimov71p2gare: пр примеру
dajex: У меня все правильно выводит скрин не могу приложить, потому что не могу ответ отредачить.
dajex: По крайней мере тест который в задаче указан программа проходит
renathalimov71p2gare: найди меня вк
Новые вопросы