Codeforces 570A – Elections [水题]

点击打开codeforces题目链接

题意

有M个城市和N个候选人,要选举首领。选举方式是,第一步每个城市内投票,选出票数最多的人;第二步是选出支持城市最多的人。如果支持数量相同,选id小的

分析

水题,选出最小的即可,最后用map记录支持的城市数量。

C++代码

#include <bits/stdc++.h>
using namespace std;

struct Node{
    int id, cnt;
    Node(int id, int cnt):id(id), cnt(cnt) {}
    bool operator < (const Node & rhs) const {
        return cnt == rhs.cnt ? id < rhs.id : cnt > rhs.cnt;
    }
};

int main() {
    int n, m; cin >> n >> m;
    map<int, int> cnt;
    for (int i = 0; i < m; ++i) {
        vector<Node> cur;
        for (int j = 0; j < n; ++j) {
            int x; cin >> x;
            cur.push_back(Node(j+1, x));
        }
        Node t = *min_element(cur.begin(), cur.end());
        ++cnt[t.id];
    }
    int best = -1, res = 1;
    for(auto i : cnt) {
        if(i.second > best) {
            best = i.second;
            res = i.first;
        }
    }
    cout << res << endl;
    return 0;
}

欢迎留言