Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

WSDOCPP14 - Logowanie

Firma "FRAKTAX" oferuje usługi w przepowiadaniu przyszłości. Żeby można było skorzystać z promocji polegającej na darmowej przepowiedni, należy się zalogować na stronie firmy. Niestety firma posiada tylko trzy serwery, które moją ograniczoną wydajność. Twoim zadaniem jest określenie, do którego serwera użytkownik ma się zalogować lub gdy wszystkie serwery są przeciążone, wstawić użytkownika do kolejki i gdy tylko wyloguje się użytkownik z dowolnego serwera, zalogować użytkownika czekającego najdłużej w kolejce.

Dopuszczalne sytuacje:

  • jeśli użytkownik chce się wylogować, a okazuje się, że nie jest zalogowany,  wypisujemy napis Error
  • jeśli użytkownik chce się zalogować, a okazuje się, że jest już zalogowany, wypisujemy napis Zalogowany
  • jeśli użytkownik chce się zalogować, ale wszystkie serwery są przeciążone, to wrzucany jest do kolejki (nie wypisujemy żadnego napisu)
  • jeśli użytkownik wylogowuje się, a w kolejce są inni userzy, to logujemy użytkownika, który czeka najdłużej i wypisujemy napis Zalogowano [nr_serwera] [nr], gdzie nr, to nr użytkownika, który czeka najdłużej w kolejce a nr_serwera to numer najmniej obciążonego serwera 
  • jeżeli użytkownik wylogowuje się, a nie ma żadnych osób w kolejce, nie wypisujemy nic
  • jeżeli użytkownik loguje się i jest to możliwe, to przydzielany jest do najmniej obciążonego serwera (jeśli jest kilka takich, to przydzielany jest do serwera o najmniejszym numerze) i wypisujemy napis: Zalogowano [nr_serwera] [nr]. Serwery mają numery 1, 2 i 3 (dotyczy to także sytuacji logowania użytkownika czekającego w kolejce).

Twoim zadaniem jest przeprowadzenie powyższej symulacji.

Wejście

W pierwszym wierszu dwie liczby naturalne n i q, określające odpowiednio przepustowość każdego z trzech serwerów (nie więcej niż 10000) oraz liczbę zapytań (nie więcej niż milion).

W kolejnych q wierszach zapytania polegające na zalogowaniu lub wylogowaniu użytkownika w formacie [z/w] [nr], gdzie z oznacza chęć zalogowania użytkownika o numerze nr użytkownika, a litera w oznacza chęć wylogowania użytkownika o numerze nr

Wyjście

Zdefiniowane w podpunktach

Przykład

Wejście:
1 10
z 1
z 2
z 1
z 3
z 4
z 5
w 4
w 2
w 2
w 1


Wyjście:
Zalogowano 1 1
Zalogowano 2 2
Zalogowany
Zalogowano 3 3
Error
Zalogowano 2 4
Error
Zalogowano 2 5

Dodane przez:Marcin Kasprowicz
Data dodania:2019-09-12
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:C++ 4.3.2

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.