void ranks(const string &v, map &m){ for(int i=0; i::iterator it = m.begin(); it != m.end(); it++) { it->second = c++; } } int winner(vector votes) { vector rankings (votes[0].size(), 0); for(int i=0; i r; ranks(votes[i], r); for(int j = 0; votes[i].size(); ++j) { rankings[j] += r[votes[i][j]]; } } int winner_index = min(rankings.begin(), rankings.end()) - rankings.begin(); int winner_val = rankings[winner_index]; int c_rep = 0; for(int i=0; i 1) return -1; return winner_index; }