Cod sursa(job #1606582)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 20 februarie 2016 13:15:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int nmax=500000;
int v[nmax+1], v2[nmax+1];

void mergesort(int l, int r) {
    if (l==r) {
        return;
    } else {
        mergesort(l,(r+l)/2);
        mergesort((r+l)/2+1,r);
        int i=l, j=(r+l)/2+1, k=l;
        while (i<=(r+l)/2 || j<=r) {
            if (i>(l+r)/2) {
                v2[k]=v[j];
                j++;
            } else if (j>r) {
                v2[k]=v[i];
                i++;
            } else if (v[i]<v[j]) {
                v2[k]=v[i];
                i++;
            } else {
                v2[k]=v[j];
                j++;
            }
            k++;
        }
        for (int i=l; i<=r; i++) {
            v[i]=v2[i];
        }
    }
}

int main () {
    int n;
    fin>>n;

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

    mergesort(1,n);
    for (int i=1; i<=n; i++) {
        fout<<v[i]<<" ";
    }
    fout<<"\n";
    return 0;
}