Cod sursa(job #527946)

Utilizator ILDottoreBogdan Stoian ILDottore Data 1 februarie 2011 16:18:21
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
using namespace std;
int N, A[500010], B[500010];
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");

void merge_sort(int l, int r) {
    int i, j, k,m;
	m=(l+r)/2;
    if(l==r) return;

    merge_sort( l, m );
    merge_sort( m + 1, r );

    for( i = l, j = m+1, k = l; i <= m || j <= r; )
        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() {
    int i;
	fscanf(f,"%d", &N );
    for(i=1;i<=N;i++ )
        fscanf(f,"%d",&A[i]);

    merge_sort( 1, N );

    for(i=1;i<=N;i++)
        fprintf(g,"%d ",A[i]);

fclose(f);
fclose(g);
return 0;}