Pagini recente » Cod sursa (job #1901561) | Cod sursa (job #2590404) | Cod sursa (job #939600) | Cod sursa (job #984637) | Cod sursa (job #110272)
Cod sursa(job #110272)
#include <cstdio>
#include <cstring>
const int Nmax = 1000005;
int N;
char s[Nmax];
int v[26];
char ret[Nmax];
int main() {
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
scanf("%s", s);
N = strlen(s);
for (int i = 0; i < N; ++i)
++v[s[i]-'a'];
for (int i = 1; i <= N; ++i) {
int best = 0, poz = -1;
for (int j = 0; j < 26; ++j)
if (v[j] > best) {
best = v[j];
poz = j;
}
if (best > (N-i+1)/2) {
ret[i] = poz;
--v[poz];
}
else
for (int j = 0; j < 26; ++j)
if (v[j] && ((i == 1) || (j != ret[i-1]))) {
ret[i] = j;
--v[j];
break;
}
}
for (int i = 1; i <= N; ++i)
printf("%c", ret[i]+'a');
}