Cod sursa(job #179345)

Utilizator rEbyTerHerpesius rEbyTer Data 15 aprilie 2008 20:17:02
Problema Litere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>
int c=0; 
void q_sort(int numbers[], int left, int right)
{
	int pivot, l_hold, r_hold;
	l_hold = left;
	r_hold = right;
	if(left != right)
	{
		int aux = numbers[left], randompoz = left+ rand() % (left - right);
		numbers[left] = numbers[randompoz];
		numbers[randompoz] = aux;//++c;
	}
	pivot = numbers[left];//++c;
	while (left<right)
	{
		while((numbers[right]>=pivot)&&(left<right))
		right--;
		if(left!=right)
		{++c;
		numbers[left] = numbers[right];
		left++;
		}
		while((numbers[left] <= pivot) && (left < right))
		left++;
		if(left != right)
		{
			numbers[right] = numbers[left];
			right--;++c;
		}
	}
	numbers[left] = pivot;
	pivot = left;
	left = l_hold;
	right = r_hold;++c;
	if(left < pivot)
		{q_sort(numbers, left, pivot-1);++c;}
	if(right > pivot)
		{q_sort(numbers, pivot+1, right);++c;}
}
int main()
{
freopen("litere.in","r",stdin);
freopen("litere.out","w",stdout);
int n;
int N[10001];int y;
scanf("%d",&y);
for(int i=0;i<=y;++i)
	scanf("%c",&N[i]);
q_sort(N,1,y);
//for(int i=1;i<y;++i)
//	printf("%c",N[i]);
printf("%d",c);
return 0;
}