Pagini recente » Cod sursa (job #2610768) | Cod sursa (job #2056422) | Cod sursa (job #140484) | Cod sursa (job #3182918) | Cod sursa (job #196399)
Cod sursa(job #196399)
#include <stdio.h>
#define NMAX 1000010
char s[NMAX];
int nr[27];
char rez[NMAX];
int main()
{
int i, j, k;
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
scanf("%s", s);
for (i = 0; s[i]; i++) nr[s[i] - 'a']++;
for (j = 0; j < i; j++) {
int jeg = 26;
for (k = 0; k < 26; k++) if (nr[k] > nr[jeg]) jeg = k;
if (nr[jeg] == i - j - nr[jeg] + 1) {
rez[j] = jeg + 'a';
nr[jeg]--;
continue;
}
for (k = 0; k < 26; k++) {
if (!nr[k]) continue;
if (j && k + 'a' == rez[j - 1]) continue;
rez[j] = k + 'a';
nr[k]--;
break;
}
}
printf("%s\n", rez);
return 0;
}