Cod sursa(job #377683)

Utilizator ChallengeMurtaza Alexandru Challenge Data 25 decembrie 2009 21:27:52
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

const char InFile[]="algsort.in";
const char OutFile[]="algsort.out";
const long int MaxN=500010;

long int N, v[MaxN];

long int partition(long int i, long int j){
	bool mod=true;
	while(i<j){
		if(v[i]>v[j]){
			long int aux=v[i];
			v[i]=v[j];
			v[j]=aux;
			mod=!mod;
		}
		if(mod){
			--j;
		}else{
			++i;
		}
	}
	return i;
}

void qsort(long int start,long int end){
	if(start<end){
		long int pivot=partition(start,end);
		qsort(start,pivot-1);
		qsort(pivot+1,end);
	}
}

int main(){
	ifstream fin(InFile);
	fin>>N;
	for(register int i=1;i<=N;++i){
		fin>>v[i];
	}
	fin.close();
	
	qsort(1,N);
	
	ofstream fout(OutFile);
	for(register int i=1;i<=N;++i){
		fout<<v[i]<<" ";
	}
	fout.close();
	return 0;
}