Cod sursa(job #416206)

Utilizator feelshiftFeelshift feelshift Data 12 martie 2010 12:55:40
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <cstring>
int l,i,k;
char string[1000001],tmp;

FILE * in = fopen("ordine.in","rt");
FILE * out = fopen("ordine.out","wt");

void quicksort(char array[],int left,int right);

int main()
{
	fscanf(in,"%s",string);
	fclose(in);
	l = strlen(string);
	
	quicksort(string,0,l-1);
	
	for(i=1;i<l;i++)
		if(string[i] == string[i-1])
			for(k=i+1;k<l;k++)
				if(string[i] != string[k])
				{
					tmp = string[i];
					string[i] = string[k];
					string[k] = tmp;
					break;
				}
					
	
	fprintf(out,"%s",string);
	fclose(out);
	
	return (0);
}

void quicksort(char array[],int left,int right)
{
	int i,k,v;
	char tmp;
	
	if(left < right)
	{
		i = left - 1;
		k = right;
		v = array[right];
		
		for(;;)
		{
			while(array[++i] < v);
			while(array[--k] > v);
			
			if(i >= k)
				break;
			
			tmp = array[i];
			array[i] = array[k];
			array[k] = tmp;
		}
		
		tmp = array[i];
		array[i] = array[right];
		array[right] = tmp;
		
		quicksort(array,left,i-1);
		quicksort(array,i+1,right);
	}
}