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() |