#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
string rankTeams( vector< string> & votes) {
int i;
int j;
pair< vector< int > ,char > tmp[ 26 ] ;
string res;
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
int Q5VJL1cS;
for ( Q5VJL1cS= ( 0 ) ; Q5VJL1cS< ( 26 ) ; Q5VJL1cS++ ) {
tmp[ i] .first .push_back ( 0 ) ;
}
}
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
tmp[ i] .second = 'A' + i;
}
for ( i= ( 0 ) ; i< ( votes.size ( ) ) ; i++ ) {
for ( j= ( 0 ) ; j< ( votes[ i] .size ( ) ) ; j++ ) {
tmp[ votes[ i] [ j] - 'A' ] .first [ j] -- ;
}
}
sort( tmp, tmp+ 26 ) ;
for ( i= ( 0 ) ; i< ( 26 ) ; i++ ) {
for ( j= ( 0 ) ; j< ( 26 ) ; j++ ) {
if ( tmp[ i] .first [ j] ) {
break ;
}
}
if ( j== 26 ) {
continue ;
}
res + = tmp[ i] .second ;
}
return res;
}
}
;
// cLay varsion 20200308-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// string rankTeams(vector<string>& votes) {
// int i, j;
// pair<vector<int>,char> tmp[26];
// string res;
//
// rep(i,26) rep(26) tmp[i].first.push_back(0);
// rep(i,26) tmp[i].second = 'A' + i;
// rep(i,votes.size()) rep(j,votes[i].size()) tmp[votes[i][j]-'A'].first[j]--;
// sort(tmp, tmp+26);
//
// rep(i,26){
// rep(j,26) if(tmp[i].first[j]) break;
// if(j==26) continue;
// res += tmp[i].second;
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIHN0cmluZyByYW5rVGVhbXModmVjdG9yPHN0cmluZz4mIHZvdGVzKXsKICAgIGludCBpOwogICAgaW50IGo7CiAgICBwYWlyPHZlY3RvcjxpbnQ+LGNoYXI+IHRtcFsyNl07CiAgICBzdHJpbmcgcmVzOwogICAgZm9yKGk9KDApO2k8KDI2KTtpKyspewogICAgICBpbnQgUTVWSkwxY1M7CiAgICAgIGZvcihRNVZKTDFjUz0oMCk7UTVWSkwxY1M8KDI2KTtRNVZKTDFjUysrKXsKICAgICAgICB0bXBbaV0uZmlyc3QucHVzaF9iYWNrKDApOwogICAgICB9CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoMjYpO2krKyl7CiAgICAgIHRtcFtpXS5zZWNvbmQgPSAnQScgKyBpOwogICAgfQogICAgZm9yKGk9KDApO2k8KHZvdGVzLnNpemUoKSk7aSsrKXsKICAgICAgZm9yKGo9KDApO2o8KHZvdGVzW2ldLnNpemUoKSk7aisrKXsKICAgICAgICB0bXBbdm90ZXNbaV1bal0tJ0EnXS5maXJzdFtqXS0tOwogICAgICB9CiAgICB9CiAgICBzb3J0KHRtcCwgdG1wKzI2KTsKICAgIGZvcihpPSgwKTtpPCgyNik7aSsrKXsKICAgICAgZm9yKGo9KDApO2o8KDI2KTtqKyspewogICAgICAgIGlmKHRtcFtpXS5maXJzdFtqXSl7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoaj09MjYpewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIHJlcyArPSB0bXBbaV0uc2Vjb25kOwogICAgfQogICAgcmV0dXJuIHJlczsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAyMDAzMDgtMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBzdHJpbmcgcmFua1RlYW1zKHZlY3RvcjxzdHJpbmc+JiB2b3RlcykgewovLyAgICAgaW50IGksIGo7Ci8vICAgICBwYWlyPHZlY3RvcjxpbnQ+LGNoYXI+IHRtcFsyNl07Ci8vICAgICBzdHJpbmcgcmVzOwovLyAKLy8gICAgIHJlcChpLDI2KSByZXAoMjYpIHRtcFtpXS5maXJzdC5wdXNoX2JhY2soMCk7Ci8vICAgICByZXAoaSwyNikgdG1wW2ldLnNlY29uZCA9ICdBJyArIGk7Ci8vICAgICByZXAoaSx2b3Rlcy5zaXplKCkpIHJlcChqLHZvdGVzW2ldLnNpemUoKSkgdG1wW3ZvdGVzW2ldW2pdLSdBJ10uZmlyc3Rbal0tLTsKLy8gICAgIHNvcnQodG1wLCB0bXArMjYpOwovLyAKLy8gICAgIHJlcChpLDI2KXsKLy8gICAgICAgcmVwKGosMjYpIGlmKHRtcFtpXS5maXJzdFtqXSkgYnJlYWs7Ci8vICAgICAgIGlmKGo9PTI2KSBjb250aW51ZTsKLy8gICAgICAgcmVzICs9IHRtcFtpXS5zZWNvbmQ7Ci8vICAgICB9Ci8vIAovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==