E被卡两个点求调!!!
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int a[60];
char yuan='a';
priority_queue<pair<int,char> > q;
char x[214514];
int main()
{
cin>>s;
n=s.size();
for(int i=0;i<n;i++)
{
a[s[i]-'a']++;
}
for(int i=0;i<26;i++)
{
//cout<<a[i]<<' ';
if(a[i]>n/2)
{
cout<<-1;
return 0;
}
q.push(make_pair(a[i],yuan));
yuan++;
}
//cout<<'\n';
for(int i=0;i<n;i++)
{
char op=q.top().second;
q.pop();
if(op!=s[i])
{
x[i]=op;
a[op-'a']--;
q.push(make_pair(a[op-'a'],op));
}
else
{
char gen=op;
op=q.top().second;
q.pop();
x[i]=op;
a[op-'a']--;
q.push(make_pair(a[op-'a'],op));
q.push(make_pair(a[gen-'a'],gen));
}
}
for(int i=0;i<n;i++)
cout<<x[i];
return 0;
}