Cod sursa(job #2269518)

Utilizator richard26Francu Richard richard26 Data 26 octombrie 2018 07:01:33
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

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

int a[500001];

void merges(int st, int mij, int dr)
{
    int i, j, loc, b[500001];
    i = st;
    j = mij + 1;
    loc = 0;
    while(i <= mij && j <= dr)
    {
        if(a[i] <= a[j]){
            loc++;
            b[loc] = a[i];
            i++;
        }
         else{
            loc++;
            b[loc] = a[j];
            j++;
         }
    }
         while(i <= mij){
            loc++;
            b[loc] = a[i];
            i++;
         }
         while(j <= dr){
            loc++;
            b[loc] = a[j];
            j++;
         }
         int k = 1;
         for(i = st; i <= dr; i++){
            a[i] = b[k];
            k++;
         }

    }


void imp(int st, int dr)
{
    if(st < dr)
    {
        int mij = (st + dr) / 2;
        imp(st, mij);
        imp(mij + 1, dr);
        merges(st, mij, dr);
    }
}


int main()
{
    int n, i;
    f>>n;
    for(i = 1; i <= n; i++) f>>a[i];
    imp(1, n);
    for(i = 1; i <= n; i++) g<<a[i]<<" ";
    f.close();
    g.close();
    return 0;

}