def count_collisions(n, directions): collisions = [0] * n left_count = 0 # Licznik mrówek patrzących w lewo, które mogą się zderzyć right_count = 0 # Licznik mrówek patrzących w prawo, które mogą się zderzyć # Liczenie zderzeń dla mrówek patrzących w prawo i w lewo for i, direction in enumerate(directions): if direction == 'P': collisions[i] += left_count right_count += 1 else: collisions[i] += right_count left_count += 1 left_count = 0 right_count = 0 # Liczenie zderzeń dla mrówek patrzących w lewo i w prawo for i in range(n - 1, -1, -1): if directions[i] == 'L': collisions[i] += right_count left_count += 1 else: collisions[i] += left_count right_count += 1 return collisions # Wczytanie danych wejściowych n = int(input()) directions = input().strip() # Obliczenie liczby odbić dla każdej mrówki collisions = count_collisions(n, directions) # Wyświetlenie wyników print(*collisions)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | def count_collisions(n, directions): collisions = [0] * n left_count = 0 # Licznik mrówek patrzących w lewo, które mogą się zderzyć right_count = 0 # Licznik mrówek patrzących w prawo, które mogą się zderzyć # Liczenie zderzeń dla mrówek patrzących w prawo i w lewo for i, direction in enumerate(directions): if direction == 'P': collisions[i] += left_count right_count += 1 else: collisions[i] += right_count left_count += 1 left_count = 0 right_count = 0 # Liczenie zderzeń dla mrówek patrzących w lewo i w prawo for i in range(n - 1, -1, -1): if directions[i] == 'L': collisions[i] += right_count left_count += 1 else: collisions[i] += left_count right_count += 1 return collisions # Wczytanie danych wejściowych n = int(input()) directions = input().strip() # Obliczenie liczby odbić dla każdej mrówki collisions = count_collisions(n, directions) # Wyświetlenie wyników print(*collisions) |