Cod sursa(job #234900)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 22 decembrie 2008 10:51:22
Problema Ordine Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
# include <stdio.h>
int a[1000005],i,j,n,ok,fr[300],k;
char c,c2,x,aux;
int main ()
{
freopen ("ordine.in","r",stdin);
freopen ("ordine.out","w",stdout);
while (scanf ("%c",&x)!=EOF)
fr[x-97]++;
while (ok==0)
{
ok=1;
for (i=0;i<26;i++)
{
c=i+97;
if (fr[i]!=0 && c!=c2)
{
fr[i]--;
a[j]=c;
c2=c;
j++;
ok=0;
break;
}
}
}

for (i=0;i<26;i++)
{
if (fr[i]!=0)
for (k=0;k<fr[i];k++)
{
a[j]=i+97;
j++;
}
}
n=j;
for (i=1;i<n-1;i++)
{
if (a[i]==a[i+1])
{
j=i;
while (a[j]==a[j+1] || a[j]==a[j-1])
{
aux=a[j];
a[j]=a[j-1];
a[j-1]=aux;
j--;
}
}
}


for (j=0;j<n;j++)
printf("%c",a[j]);
return 0;

}