ABC 089 - C: March

問題文

C - March

解説

N人から 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;
}