fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct node {
  4. int p;
  5. int q;
  6. };
  7. bool acomp(node lhs, node rhs) { return lhs.p > rhs.p; }
  8. int main() {
  9. int t; cin>>t;
  10. while(t--){
  11. struct node b[26];
  12. for(int i=0;i<26;i++) b[i].p=0;
  13. char a[100000],c[100000];
  14. scanf("%s",a);
  15. int x=strlen(a);
  16. for(int i=0;a[i]!=NULL;i++) {
  17. (b[a[i]-97].p)++;
  18. b[a[i]-97].q=a[i]-97;
  19. }
  20. sort(b,b+26,acomp);
  21. int sum=0,j=0,k=1,l=0;
  22. for(int i=0;i<26;i++) sum+=b[i].p;
  23. for(int i=0;i<26;i++) {
  24. if(sum-b[i].p<b[i].p-1) {cout<<"-1\n"; l=1; break;}
  25. else {
  26. if(j<k) {for(int m=0;m<b[i].p;m++) {
  27. c[j]=b[i].q;
  28. j+=2;
  29. }}
  30. else {
  31. for(int m=0;m<b[i].p;m++) {
  32. c[k]=b[i].q;
  33. k+=2;
  34. }
  35. }
  36. }
  37. }
  38. if(l!=1) {
  39. if(c[x-1]==c[x-2]) {
  40. cout<<char(c[x-1]+97);
  41. for(int i=0;i<x-1;i++) {
  42. cout<<char(c[i]+97);
  43. }
  44. } else {
  45. for(int i=0;i<x;i++) {
  46. cout<<char(c[i]+97);
  47. }
  48. }
  49. cout<<"\n";
  50. }
  51. }
  52. return 0;
  53. }
Success #stdin #stdout 0s 3216KB
stdin
1
aaabbccc
stdout
cacacaba