Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Hanoi
(hanoi2)
Limit pamięci: 64 MB
Limit czasu: 1.00 s

Jasio bawi się zabawką podobną do wieży Hanoi. Zabawka składa się z pręta, na który można nakładać krążki o różnych średnicach. W zabawce chodzi o to, żeby na pręt nałożyć wszystkie krążki. Zakłada się przy tym, że krążki o mniejszej średnicy muszą leżeć na krążkach o większej średnicy. Innymi słowy, patrząc z góry musi być widać wszystkie nałożone na pręt krążki.

Niestety, Jasio jeszcze nie potrafi dobrze układać tych krążków. Metodą prób i błędów próbuje dojść do rozwiązania. Dlatego też co chwilę podchodzi do taty, pytając czy dobrze ułożył krążki na pręcie. Tata wtedy patrzy na pręt z krążkami i sprawdza ile krążków jest widocznych z góry. Niestety, obowiązki w firmie wzywają – prezes Januszex S.A. nie ma już czasu na takie zabawy, dlatego poprosił Cię o napisanie programu, który za niego będzie odpowiadał Jasiowi.

Napisz program, który: wczyta operacje, które wykonuje Jasio, wyznaczy jaka jest liczba krążków widocznych z góry po każdej operacji i wypisze wyniki na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna Q, liczba operacji na pręcie (początkowo pustym). W kolejnych Q wierszach znajduje się ciąg operacji Jasia na pręcie. Każda operacja jest opisana jedną liczbą całkowitą Ai. Jeśli liczba Ai jest dodatnia – oznacza ona średnicę krążka nałożonego na szczyt pręta. Jeśli zaś jest równa 0 – oznacza ona operację zdjęcia krążka ze szczytu pręta.

Możesz założyć, że ciąg operacji jest poprawny tzn. że Jasio nie będzie zdejmował krążka, gdy pręt jest pusty.

Wyjście

Twój program powinien wypisać na wyjście Q wierszy. W i-tym wierszu powinna się znaleźć jedna liczba całkowita – liczba widocznych krążków po wykonaniu i pierwszych operacji z wejścia.

Ograniczenia

1 ≤ Q ≤ 500 000, 0 ≤ Ai ≤ 109.

Przykład

Wejście Wyjście
5
5
3
4
0
6
1
2
2
2
1