Cod sursa(job #159997)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 14 martie 2008 17:20:10
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <string.h>
#define N 1000000
char sol[N],v[N];
int main()
{
  int i,l,g,j,s=1;
  int inj,aux,gata;
  freopen("ordine.in", "r",stdin);
  freopen("ordine.out", "w",stdout);
  scanf("%s\n", v);

  l=strlen(v);
  inj=l;
  while(inj>1)
  {
    inj/=2;
    do{
	gata=1;
	for(i=0;i<l-inj;++i)
	if(v[i]>v[i+inj])
	{
	  gata=0;
	  aux=v[i];
	  v[i]=v[i+inj];
	  v[i+inj]=aux;
	}
       }while(!gata);

   }
   sol[0]=v[0];
   for(i=1;i<l;++i)
   {
      g=0;
      for(j=s;j<=l;++j)
      {
	 if(v[j]=='0' && g==0)
		 s=j;
	 else g=1;
	 if(sol[i-1]!=v[j] && v[j]!='0')
	     {sol[i]=v[j]; v[j]='0'; break;}
      }
   }
    for(i=0;i<l;++i)
     printf("%c", sol[i]);
   return 0;
}