Pagini recente » Cod sursa (job #3131456) | Cod sursa (job #2110568) | Cod sursa (job #1488957) | Cod sursa (job #1994165) | Cod sursa (job #2019458)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX = 1000005;
char s[NMAX];
char sol[NMAX];
int vf[35];
int main()
{
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
scanf("%s", &*s);
for(int i = 0;s[i]; ++i) {
++vf[s[i] - 'a'];
}
int last = 30, val = 'z' - 'a';
int n = strlen(s);
for(int i = 0;i < n; ++i) {
bool ok = false;
int lim = n - i, j = 0;
for(;j <= val && ok == false;) {
if(vf[j] == lim / 2 + 1 && last != j) {
ok = true;
}
else {
++j;
}
}
if(ok == false) {
j = 0;
while(j <= val && ok == false) {
if(last != j && vf[j] != 0) {
ok = true;
}
else {
++j;
}
}
}
sol[i] = j + 'a';
--vf[j];
last = j;
}
printf("%s\n", sol);
return 0;
}