2643:Election

keyword

連想配列 C++

概要

選挙の候補者と政党のリスト、投票結果が与えられる。当選した人の所属する政党を出力する問題。
連想配列が使えれば(使えなくても)実装するだけ。それでも中々スマートに書くのは難しい。

int main(){
    int n, i, best=-1;
    string s1, s2, win;
    map<string, string> dict;
    map<string, int> cnt;
    scanf("%d\n",&n);
    REP(i,n){
        getline(cin,s1);
        getline(cin,s2);
        dict[s1] = s2;
    }
    scanf("%d\n",&n);
    REP(i,n){
        getline(cin,s1);
        cnt[s1]++;
    }
    EACH(cnt,it){
        if(it->second > best){
            best = it->second;
            win = it->first;
        }
        else if(it->second == best){
            win = "";
        }
    }
    if(win.empty()) printf("tie\n");
    else printf("%s\n", dict[win].c_str());
    return 0;
}