Pagini recente » Cod sursa (job #357509) | Cod sursa (job #2033920) | Cod sursa (job #342085) | Cod sursa (job #1002591) | Cod sursa (job #112091)
Cod sursa(job #112091)
#include<stdio.h>
#include<string.h>
char cit[1000010],a[30],*c,lt,cf;
long int i,j,fr[30],l,r,poz,k;
int main()
{
FILE *f,*g;f=fopen("ordine.in","r");g=fopen("ordine.out","w");
c=&cit[0];
fscanf(f,"%s",c);
l=strlen(c);
for(i=0;i<27;i++)a[i]=(char)i+'a';
for(i=0;i<l;i++)
fr[(long int)(c[i]-'a')]++;
for(i=0;i<27;i++)
if(fr[i]) { fr[j]=fr[i];a[j]=a[i];j++;}
for(i=j;i<=27;i++) {a[i]=0;fr[i]=0;}
j--;
while(j>1)
{
if(fr[j]>l-fr[j])
{fprintf(g,"%c",a[j]);fr[j]--;lt=a[j];}
else
if(lt!=a[0])
{fprintf(g,"%c",a[0]);fr[0]--;lt=a[0];
if(!fr[0]){for(i=0;i<=j;i++){a[i]=a[i+1];fr[i]=fr[i+1];}j--;}
}
else
{fprintf(g,"%c",a[1]);fr[1]--;lt=a[1];
if(!fr[1]){for(i=1;i<=j;i++){a[i]=a[i+1];fr[i]=fr[i+1];}j--;}
}
l--;
}
if(l%2){ fprintf(g,"%c",a[1]);fr[1]--;l--;}
if(l)for(;;);
fprintf(g,"\n");
fcloseall();
return 0;
}