题目链接:​​http://codeforces.com/contest/864/problem/A​​​
题意:有一个游戏,给你一个长度为n的序列,两个人分别选两个数字,你选择了一个数字,你就能把这串序列的所有数字拿走,现在让你判断这个游戏是否公平,如果选完这两个数字,就把所有的数字拿走了,且两个人手上的数字个数是一样的,就称为公平游戏,否则不公平
解析:其实说白了,就问你这个序列是否有两种数字,且个数相等,我是直接拿map存着,然后判断一下

#include <bits/stdc++.h>
using namespace std;
map<int,int>maple;
int main(void)
{
int n,x;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&x);
maple[x]++;
}
if(maple.size()>2)
puts("NO");
else
{
map<int,int>::iterator t1 = maple.begin();
map<int,int>::iterator t2 = maple.begin();t2++;
if(t1->second==t2->second)
{
puts("YES");
printf("%d %d\n",t1->first,t2->first);
}
else
puts("NO");
}

return 0;
}