wanimaru47's diary

プログラミング等々

pairの一方の値を使ったソート

AOJ 0029より

文字列とその文字列の出現回数をpairの値として使います。pairの出現回数に付いて一番大きいものを見つけたいと思います。そこでpairについて一番大きい値をループで見つけるのもありですが、今回をsortを使って一番大きいものを見つけたいと思います。

  • コード
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
 
typedef pair<string, int> P;
 
bool pairCompare(const P& firstElof, const P& secondElof)
{
    return firstElof.second > secondElof.second;
}
 
int main(void)
{
    string s, m;
    vector<P> v;
    while (cin >> s) {
        if (m.size() < s.size()) m = s;
        bool flag = true;
        for (int i = 0; i < v.size(); i++) {
            if (v[i].first == s) {
                flag = false;
                v[i].second++;
            }
        }
        if (flag) v.push_back(P(s,1));
    }
    sort(v.begin(), v.end(), pairCompare);
    cout << v[0].first << " " << m << endl;
     
    return 0;
}