Cod sursa(job #1496297)

Utilizator andreiudilaUdila Andrei andreiudila Data 4 octombrie 2015 18:30:15
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int i ,n,a[500000],c[500000],l,r;
void mergesort(int l,int r)
{
    int i;
    if(l==r) return;
    int mid=(l+r)/2;
    mergesort(l,mid);
    mergesort(mid+1,r);
    int p1,p2;
    p1=l;
    p2=mid+1;
    for(i=l; i<=r; i++)
        if(p1==mid+1)
        {
            c[i]=a[p2];
            p2++;
        }
        else if(p2==r+1)
        {
            c[i]=a[p1];
            p1++;
        }
        else if(a[p1]<a[p2])
        {
            c[i]=a[p1];
            p1++;
        }
        else
        {
            c[i]=a[p2];
            p2++;
        }

    for(i=l; i<=r; i++)
        a[i]=c[i];

}

int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>a[i];

    mergesort(1, n);

    for(i=1; i<=n; i++)
        fout<<a[i]<<" ";


    return 0;
}