Cod sursa(job #796696)

Utilizator claudiumihailClaudiu Mihail claudiumihail Data 12 octombrie 2012 10:17:01
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;

template <class Iter>
void merge_sort(Iter first, Iter last)
{
    if (last - first > 1)
    {
        Iter median = first + (last - first)/2;

        merge_sort(first, median);
        merge_sort(median, last);
        
        inplace_merge(first, median, last);
    }
}

int main()
{
    int n;
    vector<int> vec;
    fstream fin("algsort.in", fstream::in);
    fstream fout("algsort.out", fstream::out);
    
    fin >> n;
    vec.reserve(n);
    
    istream_iterator<int> it_in(fin);
    istream_iterator<int> it_end;
    copy(it_in, it_end, std::inserter(vec, vec.end()));
    
    merge_sort(vec.begin(), vec.end());
    
    ostream_iterator<int> it_out(fout, " ");
    copy(vec.begin(), vec.end(), it_out);
    
    return 0;
}