def count_reflections(n, directions):
reflections = [0] * n # Inicjalizacja listy przechowującej liczbę odbić dla każdej mrówki
# Funkcja symulująca ruch mrówki i zliczająca odbicia
def simulate_movement(pos, direction):
nonlocal reflections # Umożliwienie dostępu do listy reflections wewnątrz funkcji
while True:
# Sprawdzenie, czy mrówka wyjdzie poza granice osi
if pos < 0 or pos >= n:
break
# Sprawdzenie, czy mrówka napotka inną mrówkę patrzącą w przeciwnym kierunku
if (direction == 'P' and directions[pos] == 'L') or (direction == 'L' and directions[pos] == 'P'):
reflections[pos] += 1
reflections[pos - 1] += 1 # Zwiększenie liczby odbić dla drugiej mrówki
break
# Przesunięcie mrówki w zależności od kierunku
if direction == 'P':
pos += 1
else:
pos -= 1
# Symulacja ruchu dla każdej mrówki
for i in range(n):
simulate_movement(i, directions[i])
return reflections
def main():
# Wczytywanie danych wejściowych
n = int(input()) # Liczba mrówek
directions = input() # Kierunki patrzenia mrówek
# Obliczanie liczby odbić dla każdej mrówki
reflections = count_reflections(n, directions)
# Wyświetlanie wyników
print(*reflections)
if __name__ == "__main__":
main()
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 38 39 40 41 42 43 | def count_reflections(n, directions): reflections = [0] * n # Inicjalizacja listy przechowującej liczbę odbić dla każdej mrówki # Funkcja symulująca ruch mrówki i zliczająca odbicia def simulate_movement(pos, direction): nonlocal reflections # Umożliwienie dostępu do listy reflections wewnątrz funkcji while True: # Sprawdzenie, czy mrówka wyjdzie poza granice osi if pos < 0 or pos >= n: break # Sprawdzenie, czy mrówka napotka inną mrówkę patrzącą w przeciwnym kierunku if (direction == 'P' and directions[pos] == 'L') or (direction == 'L' and directions[pos] == 'P'): reflections[pos] += 1 reflections[pos - 1] += 1 # Zwiększenie liczby odbić dla drugiej mrówki break # Przesunięcie mrówki w zależności od kierunku if direction == 'P': pos += 1 else: pos -= 1 # Symulacja ruchu dla każdej mrówki for i in range(n): simulate_movement(i, directions[i]) return reflections def main(): # Wczytywanie danych wejściowych n = int(input()) # Liczba mrówek directions = input() # Kierunki patrzenia mrówek # Obliczanie liczby odbić dla każdej mrówki reflections = count_reflections(n, directions) # Wyświetlanie wyników print(*reflections) if __name__ == "__main__": main() |
English