Pagini recente » Cod sursa (job #277938) | Cod sursa (job #788183) | Cod sursa (job #1821119) | Cod sursa (job #205520) | Cod sursa (job #1424795)
#include <stdio.h>
#define MAXN 1000000
#define BAZA 26
char s[MAXN+3];
int fr[BAZA];
int main()
{
int n, i, max, min, cif, last;
FILE *fin, *fout;
fin=fopen( "ordine.in", "r" );
fout=fopen( "ordine.out", "w" );
fgets(s, MAXN+2, fin);
n=0;
while(s[n]!='\n')
{
fr[s[n]-'a']++;
n++;
}
last=BAZA;
for( i=0; i<n; i++ )
{
min=max=cif=BAZA-1;
while( cif>0 )
{
cif--;
if( cif!=last )
{
if( fr[cif]!=0 )
{
min=cif;
}
if( fr[cif]>fr[max] )
{
max=cif;
}
}
}
if( (max==min) || ((n-i)/2>=fr[max]) )
{
fr[min]--;
fputc(min+'a', fout);
last=min;
}
else
{
fr[max]--;
fputc(max+'a', fout);
last=max;
}
}
fputc('\n', fout);
fclose(fin);
fclose(fout);
return 0;
}