Cod sursa(job #1314063)

Utilizator danielmaxim95FMI Maxim Daniel danielmaxim95 Data 11 ianuarie 2015 14:55:10
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
//MergeSort
#include <fstream>
#define NMAX 1000
using namespace std;

ifstream f ("algsort.in");
ofstream g ("algsort.out");

struct vec{int n; int v[NMAX];};
vec v;

void intercl(int a[], int s, int p, int d)
{
    int j=1, i, b[NMAX] ,sp=p ,c=d-s+1;

    p++;
    for(i=1; i<=c; i++)
        if(((a[s]>a[p])&&(p<=d))||(s>sp))
        {
            b[j]=a[p];
            p++;
            j++;
        }
        else
        {
            b[j]=a[s];
            s++;
            j++;
        }

    s=d-c;
    for(i=1;i<=c;i++)
        a[s+i]=b[i];
}

void msort(int a[], int low, int high)
{
    int pivot;
    if(low<high)
    {
        pivot=(low+high)/2;
        msort(a,low,pivot);
        msort(a,pivot+1,high);
        intercl(a,low,pivot,high);
    }
}

int main()
{
    f >> v.n;
    for(int i=1; i<=v.n; i++)
        f >> v.v[i];

    msort(v.v, 1, v.n);

    for(int i=1; i<=v.n; i++)
        g << v.v[i] << " ";

    return 0;
}