题解:AT_abc398_c [ABC398C] Uniqueness

· · 题解

题目大意

编号为 1-n 的人手里都有一个数,找到数是唯一且最大的那个人的编号。

解题思路

映射一下数出现的个数,然后遍历找到唯一的数,再遍历人找到人的编号。

代码实现

#include<bits/stdc++.h>
using namespace std;
map<int, int> mp;
int n, a[300005], ans;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        mp[a[i]]++;
    }
    for (auto it : mp) {
        if (it.second == 1)
            ans = max(ans, it.first);
    }
    for (int i = 1; i <= n; i++)
        if (a[i] == ans) {
            cout << i;
            return 0;
        }

    cout << -1;
    return 0;
}