ABC 089 - C: March
問題文
解説
人から 3 人選ぶ問題だが、条件より "MARCH" 内のいずれかの文字で始まる人に選ぶ対象を限定している。 それぞれの文字で始まる人の数を数えて、3 重ループで 3 つの文字を選び、個数の積の和を取る。
コード
#define REP(i,a,b) for(int i=a;i<(int)b;i++) #define rep(i,n) REP(i,0,n) int main() { int N; cin >> N; map<char, int64_t> mp; rep(i, N) { string s; cin >> s; mp[s[0]]++; } const string march = "MARCH"; int64_t ans = 0; rep(i, 5) rep(j, i) rep(k, j) { ans += mp[march[i]] * mp[march[j]] * mp[march[k]]; } cout << ans << endl; }