Cod sursa(job #1979279)

Utilizator ifrimencoAlexandru Ifrimenco ifrimenco Data 10 mai 2017 09:44:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 500002
using namespace std;

int v[nmax];

void merge_bine (int st, int dr ) {
    vector <int> q;
    int mi = (st + dr) / 2;
    int i = st, j = mi + 1;
    while (i <= mi && j <= dr) {
        if (v[i] <= v[j]) q.push_back(v[i++]);
        else if (v[i] > v[j]) q.push_back(v[j++]);
    }
    while (i <= mi) q.push_back(v[i++]);
    while (j <= dr) q.push_back(v[j++]);

    for (i = 0; i < q.size();++i) {
        v[i + st] = q[i];
    }
}

void divide (int st, int dr) {
    if (st < dr) {
        int mi = (st + dr) / 2;
        divide (st, mi);
        divide (mi + 1, dr);
        merge_bine(st, dr);
    }
}

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

int main()
{
    int n;
    f >> n;
    for (int i = 1; i <= n; ++i)
        f >> v[i];
    divide (1, n);
    for (int i = 1; i <= n; ++i)
        g << v[i] << " ";
    return 0;
}