Mrówki

시간 제한1초메모리 제한1024 MB

요약
수직선 위의 개미들이 서로 부딪히며 튕겨 나갈 때, 각 개미가 몇 번 충돌하는지 센다.
난이도

보통10점 중 7점

유형
수학, 정렬, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Na osi liczbowej stoi nn mrówek – ii-ta z nich w punkcie ii. Każda z mrówek patrzy w prawo (w kierunku rosnących współrzędnych) lub w lewo (w kierunku malejących współrzędnych). Mrówki są na tyle małe, że możemy traktować je jak pojedyncze punkty.

Na sygnał wszystkie mrówki zaczynają z jednakową, jednostkową prędkością maszerować w kierunkach w które patrzą. Jeśli dwie mrówki się zderzą (znajdą się w tym samym punkcie), to odbijają się od siebie, tzn. obie zmieniają kierunek marszu i maszerują dalej. Można udowodnić, że po pewnym czasie nie będą już więcej następować żadne zderzenia. Czy jesteś w stanie napisać program, który dla każdej mrówki obliczy ile razy odbije się od innych mrówek?

입력

W pierwszym wierszu standardowego wejścia znajduje się jedna liczba całkowita nn (1≤n≤300,0001 ≤ n ≤ 300\\, 000), oznaczająca liczbę mrówek.

W drugim wierszu standardowego wejścia znajduje się słowo długości n składające się jedynie ze znaków ‘L’ oraz ‘P’. Jeśli ii-ta litera tego słowa to ‘L’, to ii-ta mrówka początkowo patrzy w lewo. W przeciwnym razie, gdy ta litera to ‘P’, mrówka ta patrzy w prawo.

출력

W jedynym wierszu standardowego wyjścia powinno znaleźć się nn liczb oddzielonych pojedynczymi odstępami. ii-ta z tych liczb powinna być równa liczbie odbić ii-tej mrówki.

힌트

Wyjaśnienie przykładu: Pierwsza mrówka patrzy początkowo w lewo i nigdy nie odbije się od żadnej innej. Ostatnia mrówka zderzy się z piątą mrówką w punkcie 5.5, po czym zacznie maszerować w prawo i już nigdy nie skończy. Trzecia mrówka, po odbiciu się od czwartej w punkcie 3.5, zacznie iść w lewo. Druga mrówka odbije się od niej w punkcie 3, po czym obróci się w lewo i nigdy nie przestanie maszerować.

예제1

  1. 예제 1

    입력
    6
    LPPLPL
    
    예상 출력
    0 1 3 3 2 1