atcoder#ABC297B. [ABC297B] chess960

[ABC297B] chess960

配点 : 200200

問題文

高橋君は chess960 と呼ばれるゲームで遊んでいます。 高橋君はランダムに決めた初期配置が chess960 の条件を満たすか確認するプログラムを書くことにしました。

長さ 88 の文字列 SS が与えられます。SS には K, Q がちょうど 11 文字ずつ、R, B, N がちょうど 22 文字ずつ含まれます。 SS が以下の条件を全て満たしているか判定してください。

  • SS において左から x,y (x<y)x,y\ (x < y) 文字目が B であるとする。このとき xxyy の偶奇が異なる。
  • K22 つの R の間にある。より形式的には、SS において左から x,y (x<y)x,y\ (x < y) 文字目が R であり、 zz 文字目が K であるとする。このとき、 x<z<yx< z < y が成り立つ。

制約

  • SS は 長さ 88 の文字列であり、K, Q がちょうど 11 文字ずつ、R, B, N がちょうど 22 文字ずつ含まれる。

入力

入力は以下の形式で標準入力から与えられる。

SS

出力

SS が条件を満たす場合 Yes を、そうでない場合 No を出力せよ。

RNBQKBNR
Yes

B は左から 33 番目、66 番目にあり、3366 は偶奇が異なります。 また、K22 つの R の間にあります。よって条件を満たします。

KRRBBNNQ
No

K22 つの R の間にありません。

BRKRBQNN
No