けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

JOI 一次予選 2022 (第 3 回) C - 運動会 (7Q, 難易度 3)

問題文が長めだから、丁寧に整理しよう!

問題概要

 N 人の生徒のうち、 K 人は赤組で、 N-K 人は白組である。

生徒の一人である葵さんは、自分が何組かを知りたい。そこで、自分以外の  N-1 人がそれぞれ赤組であるか白組であるかを調べた。その結果は長さ  N-1 の文字列  S として表現される (赤組は文字 'R'、白組は文字 'W' で表される)。

葵さんが赤組であるか、白組であるかを求めよ。

制約

  •  S のうち、文字 'R' が  K 個または  K-1 個である

解法

次のように考えればよいでしょう。


文字列  S に含まれる文字 'R' の個数を  M とするとき

  •  M = K - 1 であるとき:葵さんは赤組である
  •  M = K であるとき:葵さんは白組である

よって、あとは  M を求めればよいです。 M は、文字列  S の各文字を for 文で調べていくことで求められます。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, K;
    string S;
    cin >> N >> K >> S;
    
    int Rnum = 0;
    for (int i = 0; i < S.size(); ++i) {
        if (S[i] == 'R') ++Rnum;
    }
    
    if (Rnum == K - 1) cout << "R" << endl;
    else cout << "W" << endl;
}