Pagini recente » Cod sursa (job #2740345) | Cod sursa (job #2746029) | Cod sursa (job #381257) | Cod sursa (job #3210980) | Cod sursa (job #106698)
Cod sursa(job #106698)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXN (1 << 20)
int N, cnt[32];
char sir[MAXN];
char sol[MAXN], sol2[MAXN];
int main(void)
{
freopen("ordine.in", "rt", stdin);
freopen("ordine.out", "wt", stdout);
int i, j, k, p, left, ind;
fgets(sir+1, MAXN, stdin); N = strlen(sir+1);
if(sir[N] == '\n') N--;
for(i = 1; i <= N; i++) cnt[sir[i]-'a']++;
for(left = N, i = 1; i <= N; i++)
{
for(k = j = 0; j < 26; j++)
if(cnt[j] > cnt[k]) k = j;
if(cnt[k] == left/2+1)
p = k;
else
for(j = 0; j < 26; j++)
if('a'+j != sir[i-1] && cnt[j] > 0) { p = j; break; }
sir[i] = 'a'+p, cnt[p]--, left--;
}
puts(sir+1);
return 0;
}