Cod sursa(job #1658750)

Utilizator dragos231456Neghina Dragos dragos231456 Data 21 martie 2016 19:33:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#define nx 500001
int n,a[nx],b[nx];
using namespace std;
int merge_sort(int i,int m, int j)
{
    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];
    }
}
int divimp(int i,int j)
{

    if(i<j)
    {
        int m=(i+j)/2;
        divimp(i,m);
        divimp(m+1,j);
        merge_sort(i,m,j);
    }
}
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>a[i];
    }
    divimp(1,n);
    for(int i=1;i<=n;++i)
    {
        g<<a[i]<<' ';
    }
    return 0;
}