Cod sursa(job #1520623)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 9 noiembrie 2015 09:30:40
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
int n;
int A[500000], B[500000];

void mergesort(int *A, int *B, int l, int r){
	if(r - l <= 1)
		return;
	int m = (l+r) >> 1;
	mergesort(A, B, l, m);
	mergesort(A, B, m, r);
	int i, j, k;
	for(i = l, j = m, k = l; j < r || i < m;)
		if(j >= r || i < m && A[i] < A[j])
			B[k++] = A[i++];
		else
			B[k++] = A[j++];
	for(k = l; k < r; ++k)
		A[k] = B[k];
}

int main(){
	FILE *in, *out;
	in = fopen("algsort.in", "r");
	out = fopen("algsort.out", "w");
	fscanf(in,"%d", &n);
	int i;	
	for(i = 0; i < n; ++i)
		fscanf(in,"%d", A+i);
	mergesort(A, B, 0, n);
	for(i = 0; i < n; ++i)
		fprintf(out,"%d ", A[i]);
	return 0;
}