Cod sursa(job #337649)

Utilizator ZethpixZethpix Zethpix Data 4 august 2009 14:09:25
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
long i,d[500002],n;
void inter(long x,long m,long y){
	long a[500002];
	for(i=x;i<=y;i++) a[i]=d[i];
	long i1=x;
	long i2=m+1;
	long k=x-1;
	while(i1<=m&&i2<=y)
		if(a[i1]<a[i2]) d[++k]=a[i1++];
		else d[++k]=a[i2++];
	for(i=i1;i<=m;i++) d[++k]=a[i];
	for(i=i2;i<=y;i++) d[++k]=a[i];
}
void sort(long x,long y){
	if(x!=y){
		long m=(x+y)/2;
		sort(x,m);
		sort(m+1,y);
		inter(x,m,y);
	}
}
int main(){
	FILE *f,*g;
	f=fopen("algsort.in","r");
	g=fopen("algsort.out","w");
	fscanf(f,"%ld",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%ld",&d[i]);
	sort(1,n);
	for(i=1;i<=n;i++)
		fprintf(g,"%ld ",d[i]);
	fprintf(g,"\n");
	fclose(f);
	fclose(g);
	return 0;
}