Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
MALINES - Złośliwe linie |
Dzisiaj w szkole spotkała Jasia duża przykrość. Pani wyświetliła na rzutniku dwie linie proste (przykład 2) i zapytała dzieci, która z nich jest dłuższa. Jasio, jako klasowy prymus, od razu wyrwał się do odpowiedzi (nie poproszony) i oznajmił z dużą pewnością siebie, wysoce lekceważącym tonem, że oczywiście dłuższa jest linia z dwoma wypustkami. Pani zażartowała, że od tego programowania musiał się Jasiowi pogorszyć wzrok, bo obie linie są równej długości i opowiedziała dzieciom o tym złudzeniu optycznym. Jasio usiadł jak niepyszny. Postanowił, że taka sytuacja już nigdy nie może mieć miejsca. W tym celu zaplanował aplikację na Bit-Glass, która na podstawie otrzymanego obrazu obliczy rozmiary wszystkich linii prostych, jakie na nim występują. Niestety, wciąż jest zbyt roztrzęsiony wydarzeniem ze szkoły, by zrobić to w całości samodzielnie i poprosił o Twoją pomoc. W wersji prealpha należy uwzględnić następujące znaki:
Linie:
| - linia pionowa;
- - linia pozioma;
/ - linia lewo-skośna;
\ - linia prawo-skośna.
Złożenia:
+ - połączenie linii poziomej i pionowej;
x - połączanie linii ukośnych;
* - połączenie wszystkich czterech linii;
<, > - połówki iksa.
Przykłady połączeń:
\./.....|......./...\........\|/....
.x.....-+-.....<.....>.......-*-....
/.\.....|.......\.../......../|\....
Przykłady braku połączeń:
..................<........|.....+..
...<......|......*........-x-...+...
../......./................|.....*..
Dla uproszczenia zakładamy, że linie poziome i pionowe mają długość 10 jednostek, zaś ukośne 14 jednostek.
Wejście
W pierwszym wierszu dwie liczby n i m oznaczające kolejno ilość wierszy i kolumn macierzy znaków, która pojawi się w kolejnych wierszach.
0 < n*m < 10^6
Wyjście
Lista linii posortowana według rosnącej długości. Każdy wiersz tej listy ma postać: "d: k", gdzie d jest długością, a k liczebnością linii o danej długości w macierzy. Jeśli nie było ani jednej linii należy wypisać "0".
Przykład 1
Wejście: 5 10
\./.......
.x........
/.\...|...
...*--+...
......|... Wyjście: 10: 1
14: 1
30: 1
40: 1
42: 1
56: 1
Przykład 2
Wejście: 15 40
........................................
....../.......................\.........
...../.........................\........
....<--------------------------->.......
.....\........................./........
......\......................./.........
........................................
........................................
........................................
..\.............................../.....
...\............................./......
....>---------------------------<.......
.../.............................\......
../...............................\.....
........................................ Wyjście: 35: 8
270: 2
Dodane przez: | M. N. |
Data dodania: | 2015-01-05 |
Limit czasu wykonania programu: | 1s-2s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU JS-MONKEY |