Pagini recente » Cod sursa (job #1735952) | Cod sursa (job #10322) | Cod sursa (job #529729) | Cod sursa (job #2234441) | Cod sursa (job #416206)
Cod sursa(job #416206)
#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);
}
}