思路: 结构体数组
先 按照 每一个赌注的个数从小到大排序 如果相等按照输入的顺序从小到大排序 顺序由orderNum记录
后 遍历数组 找堵住个数等于1的赌注 。
#include<iostream>
#include<vector>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<map>
using namespace std;
#define Max 10000
struct node
{
int orderNum;//序号
int betNum;
int bet;
}Hash[Max+1];
bool cmp(node n1, node n2)
{
if(n1.betNum==n2.betNum)
return n1.orderNum<n2.orderNum;
return n1.betNum<n2.betNum;
}
int main()
{
for(int i=0; i<Max+1; i++){
Hash[i].betNum=0;
Hash[i].bet=0;
Hash[i].orderNum=Max+1;
}
int N;
cin>>N;
for(int i=1; i<=N; i++)
{
int BET;
cin>>BET;
Hash[BET].bet=BET;
Hash[BET].betNum++;
Hash[BET].orderNum=i;
}
sort(Hash, Hash+Max, cmp);
for(int i=0; i<Max+1; i++)
{
if(Hash[i].betNum==1){
cout<<Hash[i].bet<<endl;
return 0;
}
}
cout<<"None"<<endl;
return 0;
}