torus711 のアレ

主に競技プログラミングの問題について書きます

Codeforces #163, B : Queue at the School

概要

男女が待ち行列を作っている。
女子の前に並んでいる男子は、気まずくなって後ろの女子と場所を替わる。
このプロセスを t 回繰り返した後の待ち行列の状態を求めよ。

解法

サイズが小さいので、t 回のシミュレーションをすることで解けます。

コード

import Control.Applicative
import Control.Monad
import Data.List

main = do
	[ _, t ] <- map read . words <$> getLine
	s <- getLine
	putStrLn $ solve t s

solve :: Int -> String -> String
solve 0 s = s
solve t s = solve ( t - 1 ) ( conv s )
	where
		conv :: String -> String
		conv [] = []
		conv ('B':'G':s) = 'G' : 'B' : ( conv s )
		conv (c:s) = c : conv s