输入样例1:
4
3 5 7 1
输出样例1:
YES
BABA
输入样例2:
3
3 5 1
输出样例2:
NO
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 1e9 + 10;
const int N = 1e6;
int n;
vector<int> p[N];
int main(){
cin >> n;
for(int i = 0;i < n;i ++){
int x;
cin >> x;
p[x].push_back(i);
}
int cnt = 0;
for(int i = 0;i < N;i ++){
if(p[i].size() == 1)
cnt ++;
}
string res(n,'B');
// 遍历所有数, 前cnt/2个超级数放到A, 后cnt/2个超级数放到B
for(int i = 0,k = 0;i < N;i ++){
if(p[i].size() == 1){
k ++;
if(k <= cnt/2){
res[p[i][0]] = 'A';
}
else{
res[p[i][0]] = 'B';
}
}
}
bool flag = true;
//超级数为奇数
if(cnt%2){
flag = false;
for(int i = 0;i < N;i ++){
if(p[i].size() > 2){
flag = true;
res[p[i][0]] = 'A';
for(int j = 1;j < p[i].size();j ++){
res[p[i][j]] = 'B';
}
break;
}
}
}
if(flag){
cout << "YES" << endl;
cout << res << endl;
}
else{
cout << "NO" << endl;
}
return 0;
}