测试点:注意默认结果
#include<stdio.h>
#include<iostream>
#include<map>
using namespace std;
int judge(char a,char b) {
if(a==b) return 0;//平局
if(a=='C' && b=='J') return 1;
if(a=='J' && b=='B') return 1;
if(a=='B' && b=='C') return 1;
//a赢
return -1;
}
int main() {
int N;
int r[2][3]= {0}; //胜、平、负次数
map<char,int> mp[2];//甲、乙各手势获胜次数
char g[3]="BB";//甲、乙获胜次数最多的手势
scanf("%d ",&N);
for(int i=0; i<N; ++i) {
char j,y;
char str[10];
cin.getline(str,10);
j=str[0];
y=str[2];
int k=judge(j,y);
if(k>0) { //甲胜
r[0][0]++;
r[1][2]++;
mp[0][j]++;
if(mp[0][j]>mp[0][g[0]])
g[0]=j;
else if(mp[0][j]==mp[0][g[0]] && g[0]>j)
g[0]=j;
} else if(k<0) { //乙胜
r[0][2]++;
r[1][0]++;
mp[1][y]++;
if(mp[1][y]>mp[1][g[1]])
g[1]=y;
else if(mp[1][y]==mp[1][g[1]] && g[1]>y)
g[1]=y;
} else { //平局
r[0][1]++;
r[1][1]++;
}
}
for(int i=0; i<2; ++i) {
for(int k=0; k<3; ++k)
printf("%d%s",r[i][k],k==2?"\n":" ");
}
printf("%c %c",g[0],g[1]);
return 0;
}