PAT--1041. Be Unique

来源:互联网 发布:linux配置监控 编辑:程序博客网 时间:2024/05/19 20:19

Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a number chosen from [1, 104]. The first one who bets on a unique number wins. For example, if there are 7 people betting on 5 31 5 88 67 88 17, then the second one who bets on 31 wins.

Input Specification:

Each input file contains one test case. Each case contains a line which begins with a positive integer N (<=105) and then followed by N bets. The numbers are separated by a space.

Output Specification:

For each test case, print the winning number in a line. If there is no winner, print “None” instead.

Sample Input 1:

7 5 31 5 88 67 88 17

Sample Output 1:

31

Sample Input 2:

5 888 666 666 888 888

Sample Output 2:

None

题解

所有数中第一个只出现一次的数。

#include <bits/stdc++.h>using namespace std;const int maxn = 100010;map<int, pair<int, int>> mp;int n;int a[maxn];int main(){#ifndef ONLINE_JUDGEfreopen("data.in", "r", stdin);#endif // ONLINE_JUDGE    cin >> n;    for(int i = 0; i < n; ++i){        cin >> a[i];        int cnt = mp.count(a[i]);        if(!cnt) mp[a[i]] = make_pair(1, i);        else mp[a[i]].first++;    }    int pos = maxn;    for(auto it = mp.begin(); it != mp.end(); ++it){//        cout << it->first << " (" << it->second.first << " " << it->second.second << ")" << endl;        if(it->second.first == 1){            pos = min(pos, it->second.second);        }    }    if(pos == maxn) cout << "None" << endl;    else cout << a[pos] << endl;    return 0;}
原创粉丝点击