POLSKI SPOJ

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.

Zadanie w systemie SPOJ (srednie)

834. Imiona

Kod zadania: NAMES

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:[rusty] jb
Data dodania:2006-05-01
Limit czasu wykonania programu:5s
Limit długości kodu źródłowego50000B
Języki programowania:All except: ERL JS PERL 6

ukryj komentarze
2011-07-24 20:09:48 Kamil Magryta
Takie wmiare nietrudne zdanie, raczej na zakodzenie niż na pomyślenie ;).

Ostatnio edytowany: 2011-07-24 20:10:43
2011-07-16 16:59:20 Piotr Kąkol
@narbeej - Wiem, to był taki skrót myślowy.
2011-07-15 23:22:50 narbej
@Piotr Kąkol
[nr] określa tylko numer bieżącego rekordu, a nie ilość rekordów [do przeczytania] ;) i tylko w przypadku ostatniego rekordu nr == ilosc.


Ostatnio edytowany: 2011-07-15 23:23:47
2011-04-08 17:03:51 Piotr Kąkol
@Karol - Ilość rekordów określa [nr].
2011-04-06 17:49:26 Karol Walasek
A nie powinno być na wejściu jeszcze informacji o ilości rekordów?
2010-09-12 19: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 13: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-02 00: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 10:15:06 Tomasz Kornacki
5s. przy takiej ilości danych to dla niektórych języków nieosiągalny pułap.
SPOJ System © 2012 Sphere Research Labs | Projekty informatyczne i aplikacje na zamówienie. All Rights Reserved.