Cod sursa(job #2512107)

Utilizator cristian51090Oanta Cristian cristian51090 Data 20 decembrie 2019 16:18:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iterator>
#include <algorithm> // for std::inplace_merge
#include <functional> // for std::less
#include <fstream>
template<typename RandomAccessIterator, typename Order>
 void mergesort(RandomAccessIterator first, RandomAccessIterator last, Order order)
{
  if (last - first > 1)
  {
    RandomAccessIterator middle = first + (last - first) / 2;
    mergesort(first, middle, order);
    mergesort(middle, last, order);
    std::inplace_merge(first, middle, last, order);
  }
}

template<typename RandomAccessIterator>
void mergesort(RandomAccessIterator first, RandomAccessIterator last)
{
  mergesort(first, last, std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>());
}
int main(){
int a[500000],n,i;
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
fin>>n;for(i=0;i<n;i++)fin>>a[i];
mergesort(a,a+n);
for(i=0;i<n;i++)
    fout << a[i]<< " ";
return 0;
}