Počet bodov:
Program:  15b

Ak nevieš programovať, nezúfaj! Môžeš sa to naučiť a ešte za to získať body, ktoré sa ti budú počítať namiesto tejto úlohy.

Stačí, že pôjdeš na stránku Programátorskej Liahni (liahen.ksp.sk). Keď budeš riešiť sadu variables_cpp, bodmi, ktoré získaš si môžeš nahradiť riešenie tejto úlohy. Stačí ak na spodku tejto stránky odovzdáš pdf-ko s prezývkou, ktorú používaš na Liahni.

Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Dávidovi na davidb@ksp.sk

Roman je hipster. Nosí hipsterské oblečenie, je hipsterské jedlo, pije hipsterskú kávu a počúva hipsterskú hudbu. Hudba sa však veľmi rýchlo vyvíja. Jeden deň je pesnička hipsterská, a na druhý deň ju začne hrať Rádio a stane sa mainstreamovou. Inú pesničku zase Rádio hrať prestane, vypadne z mainstreamu a stane sa hipsterskou.

Samozrejme Roman si nemôže dovoliť počúvať Rádio, je predsa hipster. Potrebuje preto vašu pomoc pri rozdhodovaní, ktoré pesničky môže alebo nemôže počúvať.

Úloha

Rádio sa rozhoduje o tom, ktoré pesničky bude hrať, výlučne podľa názvu. Konkrétne, podľa toho, aké písmená sa v jej názve nachádzajú. Pesničku zahrá Rádio iba vtedy, keď sa celý názov skladá len z mainstreamových písmen. O tom, ktoré písmená sú mainstreamové rozhoduje Rádio a verejnosti to oznamuje počas vysielania. Občas tiež Rádio vyhlási, že niektoré písmeno sa stalo hipsterským a písmená, ku ktorým sa vôbec nevyjadruje sú hipsterské už len z princípu. Na začiatku sú všetky písmená hipsterské.

Na vstupe dostanete zoznam vyhlásení Rádia o mainstreamovosti/hipsterskosti písmen a pomedzi to Romanove otázky na nejaké pesničky, všetko v chronologickom poradí.

Na každú Romanovu otázku zistite odpoveď podľa toho, ktoré písmená sú v danom momente mainstreamové.

Formát vstupu

V prvom riadku je číslo \(n\) \((1\leq n\leq 10^5)\) – počet udalostí. Nasleduje \(n\) riadkov. Každý obsahuje jednu z nasledujúcich troch správ:

mainstream x – písmeno x je od teraz mainstreamové

hipster x – písmeno x je od teraz hipsterské (nie je mainstreamové)

aka NazovPesnicky – Roman sa pýta či je pesnička NazovPesnicky mainstreamová alebo hipsterská.

Písmeno x je vždy buď malé alebo veľká písmeno abecedy (a-z, A-Z) a NazovPesnicky je tvorený jedným slovom, ktoré sa skladá z najviac \(20\) takýchto písmen. Názov piesne teda neobsahuje žiadne špeciálne znaky ani medzery.

Formát výstupu

Pre každý riadok na vstupe, ktorý začína aka vypíšte na jeden riadok buď hipster alebo mainstream podľa toho, či je daná pesnička aktuálne hipsterská alebo mainstreamová.

Hodnotenie

Vaše riešenie bude otestované na \(3\) sadách vstupov. Za vyriešenie každej sady získate \(5\) bodov. Tieto sady sa líšia veľkosťou vstupných údajov. Okrem toho v prvej sade názvy pesničiek, na ktoré sa Roman pýta, obsahujú iba písmená ad.

Vo vstupných sadách platí:

Číslo sady 1 2 3
maximálne \(n\) \(1\,000\) \(10\,000\) \(100\,000\)

Načítanie vstupu

Ak ste ešte nepracovali s textovými reťazcami, nezúfajte, je to vskutku jednoduché.

V C++ chcete použiť premenné typu string, ktorú načítate pomocou cin. Načítavanie v tomto prípade zoberie všetky znaky po najbližšiu medzeru alebo koniec riadka. Načítať dva reťazce v jednom riadku oddelené medzerou (ako potrebujeme v úlohe) vieme jednoducho:

string a,b;

cin >> a >> b;

Na premennú typu string sa potom vieme pozerať ako na pole znakov, teda ak chceme zistiť znak reťazca a na pozícii \(i\), stačí napísať a[i]. Tento znak potom môžeme napríklad porovnať:

if(a[0] == 'b') cout << "Slovo zacina na pismeno b."

V jazyku Python môžeme načítavať vstup pomocou príkazu input(). Tento príkaz načíta celý nasledovný riadok, vrátane medzier. Ak teda chceme načítať dva reťazce na jednom riadku, musíme to po načítaní rozdeliť príkazom .split().

a, b = input().split()

Tento príkaz načíta riadok vstupu, rozdelí ho podľa medzery a výsledné dve časti vloží do premenných a a b. Tento príkaz by nefungoval ak by bola na riadku viac ako jedna medzera.

Na premennú, v ktorej je reťazec, sa môžeme pozerať tiež ako na list znakov, akurát tento list nevieme meniť. Takisto sa však vieme pozrieť na \(i\)-te písmeno:

if a[0] == 'b': print('Slovo zacina na pismeno b.')

V oboch jazykoch si na internete môžete nájsť, ako sa dá zmeniť znak na číslo podľa ASCII tabuľky.

Príklady

Input:

6
aka caba
mainstream a
mainstream b
aka caba
mainstream c
aka baca

Output:

hipster
hipster
mainstream

Na začiatku sú všetky písmená hipsterské, pri druhej otázke pesnička caba obsahuje hipsterské písmeno c, kvôli ktorému je hipsterská. Pesnička baca je však v momente otázky už mainstreamová.

Input:

11
mainstream a
mainstream A
aka Aaaaa
hipster a
hipster b
mainstream D
aka Da
aka DA
mainstream S
aka SAD
aka LoL

Output:

mainstream
hipster
mainstream
mainstream
hipster

Rádio môže označiť za hipsterské/mainstreamové jedno písmeno aj viac krát za sebou.

Takýto vstup sa v prvej sade nevyskytne, pretože obsahuje skladby z iných písmen ako ad.

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.