PAT:A1041 Be Unique (20 分)
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<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 10010;
struct Unique{
int id;
int num;
int x;
}peo[maxn];
void init() {
for(int i = 0; i < maxn; i++) {
peo[i].id = maxn;
peo[i].num = 0;
peo[i].x = 0;
}
}
bool cmp(Unique a, Unique b) {
return a.id < b.id;
}
int main() {
int N, x;
scanf("%d", &N);
for(int i = 1; i <= N; i++) {
scanf("%d", &x);
peo[x].id = i;
peo[x].num++;
peo[x].x = x;
}
sort(peo, peo+maxn, cmp);
bool isFlag = false;
for(int i = 0; i < maxn; i++) {
if(peo[i].num == 1) {
printf("%d", peo[i].x);
isFlag =true;
break;
}
}
if(isFlag == false) printf("None");
return 0;
}