Cod sursa(job #2055285)

Utilizator ScarymovieMocanu Alexandru Scarymovie Data 3 noiembrie 2017 00:07:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;
vector<int> v;
void combina(int l1,int r1,int l2,int r2)
{
    vector<int> c;
    int i,j;
    for(i=l1,j=l2;i<=r1 && j<=r2;)
        if(v[i]<=v[j]) c.push_back(v[i++]);
        else c.push_back(v[j++]);
    while(i<=r1) c.push_back(v[i++]);
    while(j<=r2) c.push_back(v[j++]);
    for(int i=l1;i<=r2;++i)
        v[i]=c[i-l1];
}
void merge_sort(int st,int dr)
{
    if(dr<=st) return;
    int mij=(dr-st)/2+st;
    merge_sort(st,mij);
    merge_sort(mij+1,dr);
    combina(st,mij,mij+1,dr);
}
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n,i;
    f>>n;v.resize(n);
    for(i=0;i<n;++i)
        f>>v[i];
    merge_sort(0,n-1);
    for(i=0;i<n;++i)
        g<<v[i]<<' ';
    return 0;
}