Cod sursa(job #340962)

Utilizator iulia609fara nume iulia609 Data 17 august 2009 10:25:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<stdio.h>   
#define dim 500001      
using namespace std;      
long long a[dim], b[dim];      
unsigned long n;      


void mergesort(int li, int ls)
{  int jum, i, j, k;

	if(li == ls) return;
	jum = (li+ls)/2;
	
	mergesort(li, jum);
	mergesort(jum+1, ls);
	
	i = li; j = jum+1; k = li;
	
	while((i <= jum) || (j <= ls))
		{
			if((j > ls) || (i <= jum) && (a[i] < a[j]))
				{
					b[k] = a[i];
					i++;
					k++;
				}
			 else
				{
					b[k] = a[j];
					j++;
					k++;
				}
		}
	for(i = li; i <= ls; i++)
		a[i] = b[i];
}


 int main()  
 { unsigned long i;      
	
	FILE *f = fopen("algsort.in", "r");   
    FILE *g = fopen("algsort.out", "w");      
    
	fscanf(f, "%lu", &n);    
    
	for(i = 1; i <= n; i++)      
        fscanf(f, "%lu", &a[i]);    
    
	fclose(f);      
                
    mergesort(1, n);      
     
	
	for(i = 1; i <= n; i++)      
        fprintf(g, "%lu ",a[i]);       
	fprintf(g, "\n"); 
	
    fclose(g);      
	return 0;      
 }