Cod sursa(job #644085)

Utilizator S7012MYPetru Trimbitas S7012MY Data 5 decembrie 2011 10:46:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#define DN 500005
using namespace std;

int n,v[DN];

void merge(int l,int m,int d) {
	int aux[DN];
	int x=l,k=1,y=m+1;
	for(;x<=m && y<=d;)
		if(v[x]<v[y]) aux[k++]=v[x++];
		else aux[k++]=v[y++];
	for(;x<=m;aux[k++]=v[x++]);
	for(;y<=d;aux[k++]=v[y++]);
	int t=l;
	for(k=1; k<=(d-l)+1;++k) v[t++]=aux[k];
}

void mergeSort(int ls, int ld) {
	if(ls>=ld) return;
	int m=(ls+ld)>>1;
	mergeSort(ls,m);
	mergeSort(m+1,ld);
	merge(ls,m,ld);
}

int main(){
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f>>n;
	for(int i=1; i<=n; ++i) f>>v[i];
	mergeSort(1,n);
	for(int i=1; i<=n; ++i) g<<v[i]<<' ';
	//for(int i=1; i<=n; ++i) cout<<v[i];
	return 0;
	
}