To zadanie pojawiło się równolegle na finale IX OI. Polecamy wysyłać rozwiązania do tamtego zadania, to zostanie wkrótce usunięte z serwisu.
Działanie odejmowania nie jest łączne, np.
, natomiast
,
a zatem
. Wynika stąd, że wartość wyrażenia postaci
zależy od kolejności wykonywania odejmowań. Zwykle przy braku nawiasów przyjmuje się, że
wykonujemy działania w kolejności od lewej do prawej, czyli wyrażenie
jest równoważne wyrażeniu
.
Mamy dane wyrażenie postaci:

gdzie
oznacza
(plus) lub
(minus), a
oznaczają (parami) różne zmienne. Chcemy w wyrażeniu postaci:

tak rozstawić
par nawiasów, aby jednoznacznie określić kolejność wykonywania
odejmowań i jednocześnie uzyskać wyrażenie równoważne danemu. Na przykład, chcąc uzyskać wyrażenie równoważne wyrażeniu:

możemy w:

rozmieścić nawiasy w następujący sposób:
.
Uwaga: Interesują nas tylko wyrażenia w pełni i poprawnie ponawiasowane. Wyrażeniem w pełni i poprawnie ponawiasowanym jest
, w którym
i
, to
w pełni i poprawnie ponawiasowane wyrażenia.
,
,
lub
nie jest w pełni ponawiasowane, ponieważ brakuje zewnętrznych nawiasów.
Napisz program, który:
,
) można rozstawić
par nawiasów w wyrażeniu
tak, aby
jednoznacznie określić kolejność wykonywania odejmowań i jednocześnie uzyskać wyrażenie równoważne danemu,W pierwszym wierszu standardowego wejścia zapisana jest jedna liczba całkowita
,
. Jest to liczba zmiennych w danym wyrażeniu. W każdym z kolejnych
wierszy jest zapisany jeden znak,
lub
. W
-tym
wierszu zapisany jest znak występujący w danym wyrażeniu między
a
.
Twój program powinien zapisać w pierwszym wierszu standardowego wyjścia jedną liczbę całkowitą
równą ilości różnych sposobów (modulo
), na jakie można rozstawić
par nawiasów w wyrażeniu
tak, aby jednoznacznie
określić kolejność wykonywania odejmowań i jednocześnie uzyskać wyrażenie równoważne danemu.
Dla danych wejściowych:
7 - - + + - +
poprawną odpowiedzią jest:
3
In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.