Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define MAX 400005
- using namespace std;
- int n;
- char str[MAX];
- int cnt[130]={0};
- vector<char> odd,even;
- int main()
- {
- scanf("%d",&n);
- scanf("%s",&str);
- for(int i=0;i<n;i++) cnt[str[i]]++;
- for(int i='0';i<='z';i++)
- {
- if(cnt[i]<=0) continue;
- if(cnt[i]%2)
- {
- odd.push_back((char)i);
- cnt[i]--;
- }
- while(cnt[i])
- {
- even.push_back(i);
- cnt[i]-=2;
- }
- }
- char ans[MAX];
- if(odd.empty())
- {
- printf("1\n");
- for(int i=0;i<n/2;i++) ans[i]=ans[n-1-i]=even[i];
- ans[n]='\0';
- printf("%s\n",ans);
- return 0;
- }
- while(even.size() % odd.size())
- {
- odd.push_back(even.back());
- odd.push_back(even.back());
- even.pop_back();
- }
- printf("%d\n",odd.size());
- int len=n/odd.size();
- while(!odd.empty())
- {
- ans[len/2]=odd.back();
- odd.pop_back();
- for(int j=0;j<len/2;j++)
- {
- ans[j]=ans[len-1-j]=even.back();
- even.pop_back();
- }
- ans[len]='\0';
- printf("%s ",ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement