Cod sursa(job #1241240)

Utilizator gabrieligabrieli gabrieli Data 13 octombrie 2014 00:24:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;

void merge_sort(
        vector<int>::iterator left,
        vector<int>::iterator right) {
    int n = distance(left, right);
    
    if (n > 1) {
        vector<int>::iterator pivot = left;
        advance(pivot, n / 2);
        
        merge_sort(left, pivot);
        merge_sort(pivot, right);
        
        inplace_merge(left, pivot, right);
    }
}

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    
    int n; fin >> n;
    
    vector<int> V(n);
    copy(istream_iterator<int>(fin), istream_iterator<int>(), V.begin());
    
    merge_sort(V.begin(), V.end());
    
    copy(V.begin(), V.end(), ostream_iterator<int>(fout, " "));
    fout << endl;
    
    return 0;
}