Cod sursa(job #111314)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 29 noiembrie 2007 12:37:45
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define v 1000000

char s[v],w[v];
int q[v];

void citire()
{
freopen("ordine.in","r",stdin);
fgets(s,v,stdin);
if (s[strlen(s)-1]=='\n')
   s[strlen(s)-1]=0;
fclose(stdin);
}

int sort_function( const void *a, const void *b)
{
   return( strcmp((char *)a,(char *)b) );
}

void ordine()
{
w[0]=s[0];
q[0]=1;
int k=1;
for (int i=1; i<strlen(s); i++)
      if (s[k]!=w[i-1] && q[k]==0)
	 {
	 q[k]=1;
	 w[i]=s[k++];
	 }
      else
	 {
	 for (int j=i+1; j<strlen(s); j++)
	     if (s[j]!=w[i-1] && q[j]==0)
		{
		q[j]=1;
		w[i]=s[j];
		break;
		}
	 }
w[strlen(s)]=0;
}

void afisare()
{
freopen("ordine.out","w",stdout);
printf("%s",w);
fclose(stdout);
}

int main()
{
citire();
qsort((void *)s, strlen(s), sizeof(s[0]), sort_function);
ordine();
afisare();
return 0;
}