Cod sursa(job #1019329)

Utilizator Robert29FMI Tilica Robert Robert29 Data 30 octombrie 2013 22:21:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int w[500001],v[500001];
void merge(int s,int d)
{
	if(s==d)
		return ;
	int m=(d+s)/2;
	merge(s,m);
	merge(m+1,d);
	int p1=s;
	int p2=m+1;
	int nr=0;
	while(p1<=m&&p2<=d)
		if(v[p1]<v[p2])
		{
			w[++nr]=v[p1];
			++p1;
		}else
		{
			w[++nr]=v[p2];
			++p2;
		}
	while(p1<=m)
	{
		w[++nr]=v[p1];
		++p1;
	}
	while(p2<=d)
	{
		w[++nr]=v[p2];
		++p2;
	}
	for(int i=s;i<=d;++i)
		v[i]=w[i-s+1];
}
int main()
{
	int n;
	fscanf(f,"%d",&n);
	for(int i=1;i<=n;++i)
		fscanf(f,"%d",&v[i]);
	
	merge(1,n);
	
	for(int i=1;i<=n;++i)
		fprintf(g,"%d ",v[i]);
	
	fclose(g);
	fclose(f);
	return 0;
}