X Olimpiada Informatyczna 2002/2003

Zadanie: ply
Autor: Marcin Kubica
Płytki drukowane

Zawody I stopnia  
Plik źródłowy: ply.xxx (xxx=pas,c,cpp)

Firma Bajtel rozpoczyna produkcję elektronicznych układów szeregowo-równoległych. Każdy taki układ składa się z części elektronicznych, połączeń między nimi oraz dwóch połączeń doprowadzających prąd. Układ szeregowo-równoległy może składać się z:

Układy są montowane na dwustronnych płytkach drukowanych. Problem polega na ustaleniu, które połączenia powinny znaleźć się na górnej, a które na dolnej stronie płytki. Ze względów technicznych, jak najwięcej połączeń powinno znaleźć się na dolnej stronie płytki, jednak do każdej części musi dochodzić przynajmniej jedno połączenie znajdujące się na górnej stronie płytki.

Zadanie

Napisz program, który:

Wejście

Ze standardowego wejścia należy wczytać opis układu szeregowo-równoległego. Opis ten ma postać rekurencyjną:

Łączna liczba liter X pojawiających się w opisie układu nie przekracza 10000000, a głębokość rekurencji w opisie nie przekracza 500.

Wyjście

Twój program powinien pisać na standardowe wyjście. W pierwszym wierszu powinna zostać wypisana jedna liczba całkowita, równa minimalnej liczbie połączeń, jakie muszą znaleźć się na górnej stronie płytki.

Przykład

Dla danych wejściowych:

R 3
S 2
X
R 2
S 2
X
X
S 2
X
X
S 3
X
X
X
R 2
X
X

poprawnym wynikiem jest:

8

Przykładowy układ
Schemat układu szeregowo-równoległego dla danych z przykładu. Ciągłą linią zaznaczono połączenia znajdujące się na górnej stronie płytki.