Cod sursa(job #2696913)

Utilizator PatruMihaiPatru Mihai PatruMihai Data 17 ianuarie 2021 11:51:11
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>

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

void mergesort(vector<int> &v, int l, int r)
{
    if(l == r)
    {
        return;
    }
    int mid = (l + r) / 2;
    mergesort(v, l, mid);
    mergesort(v, mid + 1, r);
    vector <int> t;
    int p1 = l;
    int p2 = mid + 1;
    for(int i = 1; i <= r - l + 1; i++)
    {
        if(p1 > mid)
        {
            t.push_back(v[p2]);
            p2++;
            continue;
        }
        if(p2 > r)
        {
            t.push_back(v[p1]);
            p1++;
            continue;
        }
        if(v[p1] <= v[p2])
        {
            t.push_back(v[p1]);
            p1++;
        }
        else
        {
            t.push_back(v[p2]);
            p2++;
        }
    }
    for(int i = 0; i < t.size(); i++)
    {
        v[l + i] = t[i];
    }
}

int main()
{
    int n;
    fin >> n;
    vector <int> v(n);
    for(int i = 0; i < n; i++)
    {
        fin >> v[i];

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

    }
    return 0;
}