Polish version    English version  
  Historia OI -> X OI 2002/2003 -> Zadania


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIV OI 2006/2007
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2002/2003
Terminarz
Zadania
Wyniki III etapu
Wyniki II etapu
Wyniki I etapu
II Etap
Przepisy
Dla zawodnikow
Przydatne zasoby
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
IV OI 1996/1997
III OI 1995/1996
II OI 1994/1995
I OI 1993/1994
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
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:

  • pojedynczej części,

    Pojedyncza część

  • kilku mniejszych układów szeregowo-równoległych połączonych szeregowo,

    Połączenie szeregowe

  • dwóch części rozgałęziających łączących równolegle kilka mniejszych układów szeregowo-równoległych.

    Połączenie równoległe

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:

  • wczyta opis układu szeregowo-równoległego,
  • obliczy minimalną liczbę połączeń, jakie muszą znajdować się na górnej stronie płytki,
  • wypisze wynik.

Wejście

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

  • jeśli pierwszy wiersz opisu zawiera wielką literę S oraz dodatnią liczbę całkowitą n (2 <= n <= 10000) oddzielone pojedynczym odstępem, to opisywany układ składa się z n mniejszych układów połączonych szeregowo, opisanych w kolejnych wierszach,
  • jeśli pierwszy wiersz opisu zawiera wielką literę R oraz dodatnią liczbę całkowitą n (2 <= n <= 10000) oddzielone pojedynczym odstępem, to opisywany układ składa się z n mniejszych układów połączonych równolegle (za pomocą dwóch części rozgałęziających), opisanych w kolejnych wierszach,
  • wiersz zawierający jedynie wielką literę X oznacza układ złożony tylko z pojedynczej części.

Łą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.




Wersja do druku