题意:如果一个序列中只有两种数,且这两种数的数量相同,则输出YES,并输出这两种数,否则输出NO。
#include<bits/stdc++.h> #define Min(a, b) ((a < b) ? a : b) #define Max(a, b) ((a < b) ? b : a) typedef long long LL; typedef unsigned long long ULL; const int INT_INF = 0x3f3f3f3f; const int INT_M_INF = 0x7f7f7f7f; const int dr[] = {0, 0, -1, 1, -1, -1, 1, 1}; const int dc[] = {-1, 1, 0, 0, -1, 1, -1, 1}; const int MOD = 1e9 + 7; const double pi = acos(-1.0); const double eps = 1e-8; const int MAXN = 100 + 10; const int MAXT = 500 + 10; using namespace std; int a[MAXN]; int b[MAXN]; int main(){ int n, x; scanf("%d", &n); int cnt = 0; for(int i = 0; i < n; ++i){ scanf("%d", &x); if(!a[x]){ b[++cnt] = x; } ++a[x]; } if(cnt == 2 && a[b[1]] == a[b[2]]){ printf("YES %d %d ", b[1], b[2]); } else{ printf("NO "); } return 0; }