[BOJ 14079] R9K

View as PDF

Submit solution

Points: 1
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

Mirko je nedavno otkrio IRC (engl. Internet Relay Chat) i vrlo se brzo probio do moderatorske pozicije na nekim popularnim kanalima. Međutim, velik problem stvaraju mu spammeri koji šalju veliku količinu istih poruka u kanal i tako onemogućavaju smislenu komunikaciju među ostalim korisnicima. Mirko je čuo za automatsku metodu moderiranja, znanu kao "R9K mod", pa vas je zamolio da mu je pomognete implementirati. Ideja R9K moda jest da se poruke koje se ponavljaju automatski zabrane, uz dodatan uvjet da treba zanemariti sve nadimke koji se pojavljuju u porukama.</p>

Preciznije, metoda funkcionira na sljedeći način:

  • Nadimak je ime pod kojim je poznat korisnik u kanalu.
    • Nadimak čini neprazan niz uzastopnih znamenaka, malih ili velikih slova engleske abecede.
    • Razlikuju se velika i mala slova.
    • Lista mogućih nadimaka poznata je unaprijed.
    • Primjeri valjanih nadimaka su "Mirko", "Slavko", "0cool", "AcidBurn"...
    </li>
  • U kanal redom dolaze poruke.
    • Poruku čine razmaci, znamenke, mala i velika slova engleske abecede te neki znakovi interpunkcije (točka, crtica, zarez, točka zarez, upitnik i uskličnik).
    • Poruka ne može počinjati ili završavati razmakom.
    • Poruka može biti prazna.
    • Primjeri valjanih poruka su "Mirko i Slavko ce biti na CERC-u.", "Puno srece na natjecanju zele vam organizatori!".
    • </ul> </li>
    • Iz svake se poruke prvo izbriše svako pojavljivanje svakog nadimka.
      • Nadimak može biti odvojen razmakom, znakom interpunkcije te početkom ili krajem poruke.
      • Na primjer, ako su nadimci "Mirko" i "Slavko", poruka "Mirko i Slavko ce biti na CERCu." postaje "_i__ce_biti_na_CERC-u." (donja crta je prikazana umjesto razmaka), dok će poruka "!Mirko.Slavko?" postati "!.?", ali iz poruke "MirkoSlavko" neće biti obrisano ništa.
      • </ul> </li>
      • Više od jednog uzastopnog razmaka zamijeni se jednim.
        • Na primjer, "_i__ce_biti_na_CERC-u." postaje "_i_ce_biti_na_CERC-u." (donja crta je prikazana umjesto razmaka).
        • </ul> </li>
        • Razmaci na početku ili na kraju poruke se brišu.
          • Na primjer, "_i_ce_biti_na_CERC-u." postaje "i_ce_biti_na_CERC-u." (donja crta je prikazana umjesto razmaka).
          • </ul> </li>
          • Za svaku poruku u redu kojem se pojavljuju, potrebno je ispisati
            • "BRISI" ako se prije pojavila
            • "OSTAVI" ako se nije prije pojavila 
            • </ul> </li> </ul> ## 입력 형식

              U prvome retku nalaze se dva prirodna broja N i M, broj nadimaka i broj poruka.

              U idućem retku nalazi se N nadimaka odvojenih razmakom.

              U idućih M redaka nalazi se po jedna poruka, redom kojim su stizale u kanal.

              Ulazni podaci bit će takvi da će na ulazu biti ukupno manje od 2 milijuna znakova, a nadimci i poruke pridržavat će se ograničenja iz teksta zadatka. 

              출력 형식

              Potrebno je ispisati M redaka, po jedan za svaku poruku. U svakom retku, potrebno je ispisati "BRISI" ili "OSTAVI", ovisno o tome treba li zadržati poruku. 

              예제 입력 1

            2 5
            Mirko Slavko
            mirko, Ovo je poruka bez nadimaka
            mirko, ovo je poruka bez nadimaka
            Slavko, ovo je poruka s nadimcima
            Mirko, ovo je poruka s nadimcima
            mirko slavko ovo je poruka bez nadimaka

            예제 출력 1

            OSTAVI
            OSTAVI
            OSTAVI
            BRISI
            OSTAVI

            예제 입력 2

            3 10
            Mirko Slavko Darko
            Mirko i Slavko se dopisuju.
            i se dopisuju.
            Mirko Slavko Darko
            
            Prethodne su dvije poruke bile prazne.
            Mirko!Slavko
            MirkoSlavko
            !
            Mirko!Slavko!
            !!

            예제 출력 2

            OSTAVI
            BRISI
            OSTAVI
            BRISI
            OSTAVI
            OSTAVI
            OSTAVI
            BRISI
            OSTAVI
            BRISI

Comments

There are no comments at the moment.