Cod sursa(job #2081059)

Utilizator karenalo13Diaconu Iulian Andrei karenalo13 Data 3 decembrie 2017 21:12:15
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

void mergesort(long long a[],long long st, long long m, long long dr)
{
 int b[100];
 int i, j, k;
 i = 0; j = st;
 // copiem prima jumatate a vectorului a in b
 while (j <= m)
 b[i++] = a[j++];
 i = 0; k = st;
 // copiem inapoi cel mai mare element la fiecare pas
 while (k < j && j <= dr)
 if (b[i] <= a[j])
 a[k++] = b[i++];
 else
 a[k++] = a[j++];
 // copiem elementele ramase daca mai exista
 while (k < j)
 a[k++] = b[i++];
}
void merge(long long a[],long long st, long long  dr)
{
 if (st < dr)
 {
 int m = (st+dr)/2;
 merge(a,st, m);
 //apelam merge pe jumatatea din stanga
 merge(a,m+1, dr);
 //apelam merge pe jumatatea din dreapta
 mergesort(a,st, m, dr);
 }
}
long long v[500001],n,i;
int main()
{
f>>n;
for( i =0;i<n;i++)
    f>>v[i];
merge (v,0,n-1);
for( i =0;i<n;i++)
    g <<v[i]<<" ";
}