Problem description


Hory Portier i Kanciapa Tajemnic
(C)
Limit pamięci: 512 MB
Limit czasu: 1.00 s

Dawno, dawno temu, za 111 górami i 111 lasami, w XIV liceum ogólnomagicznym odbywały się warsztaty przygotowujące do II etapu Bajtockiej Olimpiady Bitów i Charów. Na straży szkoły stał Hory Portier, chroniący uczniów przed nadchodzącymi potworami. Do walki z potworami wykorzystuje wyroby magiczne, oferowane mu przez Serwerusa Skype’a.

Hory Portier potrafi zaglądać w przyszłość (dzięki lekcjom z nikim innym jak jedynym Wróżbitą Maciejem), zatem ma dostępny ciąg zdarzeń, które zajdą w przyszłości. Zdarzenia ułożone są chronologicznie od 1 do N-tego. Każde ze zdarzeń jest jednego z dwóch typów:

  • Do szkoły podchodzi potwór rodzaju p,
  • Serwerus Skype oferuje Horemu Portierowi miksturę rodzaju p, którą Hory Portier może przyjąć lub nie.

Hory Portier doskonale zdaje sobie sprawę, że do walki z potworem rodzaju p wystarczy mu dokładnie jedna mikstura tego samego rodzaju, którą zużywa w trakcie walki. Z drugiej strony, wszystkie mikstury przechowuje w swojej Kanciapie Tajemnic, której to pojemność jest ograniczona. Nie chciałby zatem przechowywać mikstur, które mogłyby okazać się nieprzydatne. Innymi słowy, załóżmy, że w momencie, w którym Hory Portier przechowuje w swojej Kanciapie najwięcej mikstur, jest ich dokładnie K. Hory Portier chciałby, żeby wśród wszystkich możliwych strategii przyjmowania mikstur wybrać taką, że K jest możliwe najmniejsze.

Hory Portier potrafi czarować, ale nie programować, zatem poprosił Cię o pomoc! Mając listę przyszłych wydarzeń oblicz, jaki jest minimalny rozmiar Kanciapy Tajemnic, aby Hory Portier zawsze miał dostępną miksturę przed walką z potworem oraz które z mikstur powinien przyjąć od Serwerusa Skype’a.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba całkowita N oznaczająca liczbę przyszłych wydarzeń. W następnych N wierszach następuje opis kolejnych zdarzeń, i-te zdarzenie opisane jest przez jeden znak oraz jedną liczbę ci, pi. Jeżeli ci jest równe ! to oznacza, że Hory Portier musi w tym momencie walczyć z potworem typu pi. Jeżeli ci jest równe +, to oznacza, że Serwerus Skype oferuje Horemu Portierowi miksturę na potwory rodzaju pi.

Wyjście

W pierwszym wierszu wyjścia należy wypisać jedną liczbę całkowitą K oznaczającą minimalny potrzebny rozmiar Kanciapy Tajemnic lub jedną liczbę  − 1, jeżeli niemożliwe jest wygranie ze wszystkimi potworami. Jeżeli K ≥ 0, w drugim wierszu należy wypisać ciąg liczb równych 0 lub 1, oznaczający, które z kolejnych mikstur Hory Portier przyjmuje od przez Serwerusa Skype’a według kolejności wydarzeń typu + na wejściu (0 oznacza nieprzyjęcie, a 1 przyjęcie mikstury). Jeżeli istnieje wiele możliwości, należy wpisać dowolne z nich.

Ograniczenia

1 ≤ N ≤ 200 000, 1 ≤ pi ≤ N.

Podzadania

W każdym zestawie testowym otrzymasz 50% punktów jeżeli pierwszy wiersz wyjścia będzie poprawny.

Podzadanie Warunki Punkty
1 Wszystkie zdarzenia typu + następują przed wszystkimi typu !. 21
2 pi = 1 dla każdego i = 1, …, N. 26
3 N ≤ 2 000. 23
4 Brak dodatkowych ograniczeń. 30

Przykład

Wejście Wyjście Wyjaśnienie
14
+ 2
+ 1
+ 1
+ 2
+ 4
+ 3
! 1
! 3
+ 4
! 2
+ 2
! 2
! 4
! 1
4
0 1 1 1 0 1 1 1 

Hory Portier mógłby wziąć wszystkie pierwsze 6 mikstur napotkanych na swojej drodze i już do końca mieć w swoim orężu potrzebne mikstury do walki z potworami. Jednakże, aby oszczędzić miejsce w Kanciapie Tajemnic, mógłby zrezygnować z którejkolwiek mikstury rodzaju 2 oraz z pierwszej napotkanej mikstury rodzaju 4 i przyjąć dopiero następne, które się pojawią, dzięki czemu w najgorszym momencie musi mieć pod ręką 4 mikstury.

Wejście Wyjście
3
+ 2
! 1
+ 1
-1