Cod sursa(job #1077552)

Utilizator nabmayaMaya Naboulsi nabmaya Data 11 ianuarie 2014 14:26:50
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;

int a[50002],n;

void merge(int p,int q,int r)
{
    int i=p,j=q+1,k=0,c[500002];
    while((i<=q)&&(j<=r))
    {
        if(a[i]<a[j])
        {
            c[k]=a[i];
            k++;
            i++;
        }
        else
        {
            c[k]=a[j];
            k++;
            j++;
        }
    }
    while(i<=q)
    {
        c[k]=a[i];
        k++;
        i++;
    }
    while(j<=r)
    {
        c[k]=a[j];
        k++;
        j++;
    }
    i=0;
    while(i<k)
    {
        a[p+i]=c[i];
        i++;
    }
}

void mergesort(int p,int r)
{
    if(p<r)
    {
        int q=(p+r)/2;
        mergesort(p,q);
        mergesort(q+1,r);
        merge(p,q,r);
    }
}

int main()
{
    int i,p=0,r;
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f>>n;
    r=n-1;
    for(i=0;i<n;i++)
    f>>a[i];
    if(n==1)
    g<<a[0];
    else
    {
        mergesort(p,r);
        for(i=0;i<n;i++)
        g<<a[i]<<" ";
    }
    f.close();
    g.close();
    return 0;
}