Cod sursa(job #262152)

Utilizator catalin93Catalin Ionescu catalin93 Data 19 februarie 2009 01:43:46
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
int a[500010],n,i;

 

void interclas(int i,int m,int j)

{int b[1000];

int x=i;

int k=1;

int y=m+1;

while(x<=m && y<=j)

     if (a[x]<a[y])

           b[k++]=a[x++];

     else

           b[k++]=a[y++];

 

 while (x<=m)

        b[k++]=a[x++];

 while (y<=j)

        b[k++]=a[y++];

 

 int t=i;

 for (k=1;k<=(j-i)+1;k++)

        a[t++]=b[k];

}

 

void divimp(int i,int j)

{if (i<j)

    {int m=(i+j)/2;

     divimp(i,m);

     divimp(m+1,j);

     interclas(i,m,j);}

}

 

 

int main()

{

	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	
	scanf("%d",&n);
	
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	
	divimp(1,n);
	
	for(i=1;i<=n;i++)
		printf("%d ",a[i]);
	

	return 0;

}