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

NAMES - Imiona

Na wydziale FTiMS wdrożono niedawno eksperymentalny system analizy pisma ręcznego (OCR). System będzie wykorzystywany przez wykładowców m. in. do automatycznego przetwarzania list obecności do postaci cyfrowej. System przeszedł dość wymagającą procedurę QA i obecnie mamy pewność, że podpisy nawet bardzo brzydko piszących studentów zostaną prawidłowo rozpoznane. Jedyny znany i jeszcze nie poprawiony bug polega na tym, że czasem małe litery są rozpoznawane jako wielkie i odwrotnie. Np. 'j' w podpisie może zostać zinterpretowane jako 'J' (ale nigdy jako inna litera).

Jeden z wykładowców postanowił wykorzystać system do przeprowadzenia pewnych badań statystycznych. Interesuje go mianowicie frekwencyjność imion wśród jego studentów. Napisz program, który pomoże wykładowcy w tych badaniach.

Wejściem Twojego programu jest lista obecności wygenerowana przez system OCR, składająca się z pewnej liczby wierszy w następującym formacie:

[nr][kropka][spacja][nazwisko][spacja][imie]

Twój program powinien wygenerować po jednym wierszu tekstu dla wszystkich różnych imion pojawiających się na liście. Każdy z tych wierszy powinien mieć format:

[imie wielkimi literami][spacja][liczba wystąpień]

Wyświetlane wiersze powinny być posortowane według malejącej liczby wystąpień, a przy remisach według porządku alfabetycznego imion (por. przykład).

Możesz założyć, że [nr] będzie poprawną liczbą całkowitą dodatnią nie większą od 100 000, a wszystkie nazwiska i imiona będą spójnymi ciągami liter (małych lub wielkich) alfabetu angielskiego o długości nie przekraczającej 20. Długość listy nie przekroczy 100 000 wierszy.

Przykład

Input:
1. KowalSki JaCEk
2. mazurkiewicz pIoTR
3. prokoP ANna
4. MisioL annA
5. BerezOwSki jaCEK
6. pietraS ANNA
7. WILkowsKA aneta

Output:
ANNA 3
JACEK 2
ANETA 1
PIOTR 1

Dodane przez:Kuba Białogrodzki
Data dodania:2006-05-01
Limit czasu wykonania programu:1.051s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: ERL GOSU JS-RHINO NODEJS PERL6 VB.NET

ukryj komentarze
2011-04-08 15:03:51 Piotr KÄ…kol
@Karol - Ilość rekordów określa [nr].
2011-04-06 15:49:26 Karol Walasek
A nie powinno być na wejściu jeszcze informacji o ilości rekordów?
2010-09-12 17:02:51 Krzysztof Butkiewicz
sprawdzalem dla roznych zestawow skladajacych sie z ~20000 wygenerowanych (pseudo-losowo) zestawow imion i nazwisk i wsio ok... a tutaj pokazuje błąd :| WTF?
2010-02-14 12:21:20 Piotr KÄ…kol
@Przemysław Wionczyk - 5 sekund to czas na rozwiązanie jednego testu. Jeśli testów jest na przykład 10 to program może wykonywać się nawet 50s (aczkolwiek nie jest to prawdopodobne, bo niektóre testy są łatwiejsze a inne trudniejsze).
2009-11-01 23:57:40 Przemys³aw Wionczyk
No właśnie. Napisałem w C++ i przekroczyłem czas. Sprawdziłem wyniki osób, których rozwiązania zaakceptowano i były tam programy w C++ z czasami powyżej 10 s. To nie fair.
2009-09-14 08:15:06 Tomasz Kornacki
5s. przy takiej ilości danych to dla niektórych języków nieosiągalny pułap.
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.