题解:AT_abc398_c [ABC398C] Uniqueness

· · 题解

C - Uniqueness

题目大意

给定 N 个人,每人有一个整数 A_i,若某人的数在所有人中不重复,则该人满足条件。找出满足条件的人的最大数,并输出此人的编号;若无满足条件者,则输出 -1

解题思路

统计每个整数出现的次数,然后在所有只出现一次的整数中寻找最大值,并输出对应的下标;若没有出现次数为 1 的整数,则输出 -1

代码

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);

    int n;
    cin>>n;

    vector<int> a(n+1);
    for(int i=1;i<=n;i++)
        cin>>a[i];

    map<int,int> mp;
    for(int i=1;i<=n;i++)
        mp[a[i]]++;

    int maxn=-1,ans=-1;
    for(int i=1;i<=n;i++){
        if(mp[a[i]]==1&&maxn<a[i]){
            maxn=a[i];
            ans=i;
        }
    }
    cout<<ans;

    return 0;
}