Pagini recente » Cod sursa (job #1640928) | Cod sursa (job #2809786) | Cod sursa (job #1723678) | Monitorul de evaluare | Cod sursa (job #112069)
Cod sursa(job #112069)
#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<26;i++)a[i]=(char)i+'a';
for(i=0;i<l;i++)
fr[(long int)(c[i]-'a')]++;
for(i=0;i<26;i++)
if(fr[i]) { fr[j]=fr[i];a[i]=a[j];j++;}
a[j]=0;j--;
r=l-2*fr[j];
for(i=1;i<=r;i++)
{
if(lt!=a[0])
{ fprintf(g,"%c",a[0]);fr[0]--;lt=a[0];
if(!fr[0])
{ for(k=0;k<=j;k++){ a[k]=a[k+1];fr[k]=fr[k+1];}
j--;
}
}
else
{ fprintf(g,"%c",a[1]);fr[1]--;lt=a[1];
if(!fr[1])
{ for(k=1;k<=j;k++){ a[k]=a[k+1];fr[k]=fr[k+1];}
j--;
}
}
}
r=fr[j];poz=0;cf=a[j];
if(lt==a[0])
for(i=1;i<=r;i++)
{ fprintf(g,"%c%c",cf,a[poz]);fr[poz]--;
if(!fr[poz])poz++;
}
else
for(i=1;i<=r;i++)
{ fprintf(g,"%c%c",a[poz],cf);fr[poz]--;
if(!fr[poz])poz++;
}
fprintf(g,"\n");
fcloseall();
return 0;
}