Cod sursa(job #474693)

Utilizator andra23Laura Draghici andra23 Data 4 august 2010 18:49:06
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<fstream>
#include<time.h>
#include<unistd.h>
#define N 1000

using namespace std;

int a[500010], c[500010];

void inter(int lo, int m, int hi){
    int i = lo, j = m+1;
    int k = lo;
    while (i <= m && j <= hi){
        if (a[i] < a[j]){
            c[k] = a[i];
            i++;
        }
        else {
            c[k] = a[j];
            j++;
        }
        k++;
    }
    while ( i <= m ){
        c[k] = a[i];
        k++;
        i++;
    }
    while ( j <= hi ){
        c[k] = a[j];
        k++;
        j++;
    }
    for (i = lo; i <= hi; i++)
        a[i] = c[i];
}

void merge(int lo, int hi){
    int m;
    if (lo < hi){
        m = (lo + hi)/2;
        merge(lo, m);
        merge(m+1, hi);
        inter(lo, m, hi);
    } 
}

int main(){
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n, i;
    f>>n;
    
    
    for (i = 0; i < n; i++)
        f>>a[i];
    
    merge(0, n-1);
    
    for (i = 0; i < n; i++)
        g<<a[i]<<" ";
    g<<'\n';
     
    return 0;
}