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.|

AL_17_09 - Baza danych

Od dziś Jasiu został pracownikiem firmy "Fraktax". Jego zadaniem na dziś jest wprowadzanie danych do bazy. Jako nowy pracownik, Jasio mógł tylko wprowadzać dane, wyszukiwać je oraz cofać i ponawiać operację wstawienia elementu do bazy. Jak się okazało system bazodanowy uległ awarii. Młody pracownik chciał zrobić dobre wrażenie i postanowił naprawić system lub napisać go od nowa. Niestety nie potrafi programować, więc poprosił ciebie o pomoc. Napisz program, który będzie symulował opisaną sytuację. Poniżej znajdują się niezbędne informacje:

  • system działa na algorytmie binarnego drzewa wyszukiwawczego,
  • wprowadzane wartości są unikatowymi liczbami całkowitymi z zakresu [0..232-1],
  • początkowa postać bazy danych jest już wypełniona liczbami zgodnie z algorytmem BST i tych liczb nie wolno modyfikować
  • Jasiu może dodawać nowy element oraz przeszukiwać bazę a także cofać operację wstawienia i ponawiać cofniętą operację
  • cofać można operacje maksymalnie do postaci początkowej bazy danych, kolejna próba cofnięcia nic nie zmienia w bazie
  • ponawiać można do momentu ostatnio wstawionej wartości (jeśli do pierwotnej postaci bazy wstawimy 3 liczby, następnie cofniemy wstawienie dwa razy, i wstawimy jedną liczbę, to możemy cofnąć się maksymalnie dwa razy, a po tej operacji ponowić operację wstawienia także dwa razy), każda następna próba ponowienia nic nie zmienia w bazie.

Wejście

W pierwszym wierszu jedna liczba całkowita dodatnia n określająca początkową liczbę danych w bazie (n ≤ 105).

W drugim wierszu n unikatowych liczb naturalnych, które należy wstawić do drzewa BST.

Następnie jedna liczba q określająca liczbę zapytań (q ≤ 200 000). Zapytanie może przyjmować jedną z czterech postaci:

 

  • i [liczba] - wstaw do bazy liczbę [liczba]
  • f [liczba] - wyszukaj w bazie liczbę [liczba]
  • z - cofnij operację wstawienia
  • y - ponów operację

 

Wyjście

Dla każdego polecenia f [liczba] w danym wierszu wypisujemy kolejne wartości drzewa, przez jakie przechodzimy wyszukując liczbę wypisując na końcu ok jeśli liczba została znaleziona lub brak jeśli liczby nie ma w bazie.

Przykład

Wejście:
8
5 1 6 4 9 2 8 0
17
f 6
f 11
f 3
i 11
i 3
f 11
f 3
z
f 11
f 3
z
f 11
f 3
y
y
f 11
f 3

Wyjście:
5 6 ok
5 6 9 brak
5 1 4 2 brak
5 6 9 11 ok
5 1 4 2 3 ok
5 6 9 11 ok
5 1 4 2 brak
5 6 9 brak
5 1 4 2 brak
5 6 9 11 ok
5 1 4 2 3 ok

Dodane przez:Marcin Kasprowicz
Data dodania:2014-07-01
Limit czasu wykonania programu:0.100s-0.5s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: ASM64 GOSU
Pochodzenie:ALGOLIGA

ukryj komentarze
2014-07-13 08:49:36 Marcin Kasprowicz
tak
2014-07-13 01:43:42 Piotr KÄ…kol
Tak dla pewności - jest możliwe wstawienie liczby do bazy, potem cofnięcie tego, powtórzenie, znowu cofnięcie, znowu powtórzenie i liczba nadal będzie w bazie?
2014-07-12 17:29:42 Marcin Kasprowicz
dzięki, usunąłem to zdanie
2014-07-12 17:19:09 radarek
Coś ucięło część treści zadania: "(liczby mieszczą się.".
2014-07-12 16:50:19 Marcin Kasprowicz
2 6 5 brak
2 6 5 ok

Ostatnio edytowany: 2014-07-12 16:52:16
2014-07-12 16:46:57 Dariusz Michalczuk
jak powinien zachować się program dla wejścia:
3
2 1 6
7
i 8
i 4
z
i 5
y
f 4
f 5
2014-07-12 16:30:15 Marcin Kasprowicz
Ogranicza się od usuwania liści
2014-07-12 16:13:32 Karol Waszczuk
nvm

Ostatnio edytowany: 2014-07-12 16:30:22
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.