search points attachment profile arrow left arrow right star heart verified symbols equation arrow-down question mark check menu accountancyadministrationagriculturalalgebraallarabicartart_musicbelarusbelarus_altbiologybusinesscatalachemistrychineseeconomicsegzamenglishentrepreneurshipenvironmentethicseuskarafirst_aidfrenchgalegogeographygeologygeometrygermangrammarhealthhistoryindia_langindonesian_langinformaticsitalianjapanesekazachkazach_altkoreanlanguagelatinlawlife_scienceliteraturelogicmathematicsmusicnigerian_langother_languagesotherspedagogicsphilosophyphysical_educationphysicspoliticspsychologyreligionrpa_langrussianrussian_altsciencesecurityskillssocial_sciencesociologyspanishstatisticstechnologytourismtrafficukrainianukrainian_altukrainian_literaturewos_civilisation accountancyadministrationagriculturalalgebraall_1arabicartart_music_2belarusbelarus_altbiologybusiness_2catalachemistry_1chineseeconomicsexam_3englishentrepreneurshipenvironment_2ethicseuskarasecurity_1frenchgalegogeography_4geology_4geometrygermangrammarhealthhistoryindia-langindonesian-langinformaticsitalianjapanesekazachAsset 230koreanlanguagelatinlawlife-scienceliteraturelogic_2mathematicsmusicnigerian-langotherlanguagesother_1pedagogicsphilosophyphysical_educationphysicspoliticspsychologyreligion_1rpa-langrussianrussian_altsciencesecurity_3_mskills_1allsocial_science_5_msociologyspanishstatisticstechnologytourismtrafficukrainianukrainian_altukrainian_literaturewos_civilisation
Автор - renathalimov71p2gare

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

Ответ

Автор - dajex

Ответ:

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)

Объяснение:

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

Ответы и объяснения

По всем вопросам пишите на - [email protected]
Сайт znanija.net не имеет отношения к другим сайтам и не является официальным сайтом компании.