abc398c

不是很难,要掌握mp和vector的转换排序,比较常用,不要写错了

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
using namespace std;

const int N = 3e5 + 10;
int n;
int a[N];
unordered_map<int, int> mp;  // 存储每个数的最后出现下标
unordered_map<int, int> cnt; // 存储每个数的出现次数

// 自定义比较函数
bool compare(const pair<int, int>& p1, const pair<int, int>& p2) {
    if (cnt[p1.first] != cnt[p2.first]) {
        return cnt[p1.first] < cnt[p2.first];
    }
    return p1.first > p2.first;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        mp[a[i]] = i;
        cnt[a[i]]++;
    }

    vector<pair<int, int>> vec(mp.begin(), mp.end());

    // 对 vector 进行排序
    sort(vec.begin(), vec.end(), compare);

    if(cnt[vec[0].first] == 1)
    cout << vec[0].second << endl;
    else cout << -1 << endl;

    return 0;
}    
posted @ 2025-04-10 14:54  啦啦啦456123  阅读(31)  评论(0)    收藏  举报