Cod sursa(job #109906)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 25 noiembrie 2007 12:55:28
Problema Ordine Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 0.82 kb
#include<stdio.h>
long u,i,j;int aux,x2[10001],gata;
char x1[10001];
char c[]={",0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"};
int main ()
{
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
while(scanf("%c", &x1[++u])!=EOF);
u--;
for(i=1;i<=u;i++)
   for(j=1;j<=26;j++)
	   if(x1[i]==c[j]) x2[i]=j;
do
{
gata=0;
for(i=1;i<=u-1;i++)
   if(x2[i]>x2[i+1])
			 {
			  aux=x2[i];
			   x2[i]=x2[i+1];
			   x2[i+1]=aux;
				gata=1;
				}

}while(gata);
do
{
gata=0;
 for(i=1;i<=u-1;i++)
   if(x2[i]==x2[i+1])
	   {
	   if(i==u-1)
		 {
		aux=x2[i];
		 x2[i]=x2[i-1];
		   x2[i-11]=aux;
		  gata=1;
		 }
		 else
			{
			 aux=x2[i+1];
			  x2[i+1]=x2[i+2];
			x2[i+2]=aux;
			 gata=1;
			}
		}
}while(gata);
for(i=1;i<=u;i++)
	printf("%c", c[x2[i]]);
return 0;
}