- Quiz
- AC
- 解説
- 2枚決めると最後の1枚が決まるので、それを持っているかが分かればよい
- その他
- 3つ組の時は常に「2つ決めたら最後の1つも決まらないかな?」と考えたい
- Inputの制約にAll cards are distinctと書いてあったのを見逃していた。問題文には書かれていないけれどInputに制約の新情報が書かれていることがある
int main(){
ll N,K;
cin>>N>>K;
VS S(N);
rep(i,N)cin>>S[i];
map<string,ll> mp;
rep(i,N){
string s = S[i];
mp[s]++;
}
auto f = [&](string& s, string& t){
stringstream ss;
rep(i,K){
if(s[i]==t[i]){
ss << s[i];
}else{
if(s[i]!='S' && t[i]!='S'){ss << 'S';}
else if(s[i]!='E' && t[i]!='E'){ss << 'E';}
else{ss << 'T';}
}
}
return ss.str();
};
ll sum=0;
rep(i,N){
FOR(j, i+1, N){
string u = f(S[i],S[j]);
sum+=mp[u];
}
}
p(sum/3);
return 0;
}