Cod sursa(job #346896)

Utilizator csizMocanu Calin csiz Data 10 septembrie 2009 00:53:03
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;


void merge(int i,int j,vector<int>& v){
    if(i+1<j){
        int m=(i+j)/2;
        merge(i,m,v);merge(m,j,v);
        vector<int> temp;

        int x=i,y=m;
        while(x<m&&y<j){
            if(v[x]<v[y]){ temp.push_back(v[x]);x++;}
            else {temp.push_back(v[y]);y++;}
        }
        while(x<m){temp.push_back(v[x]);x++;}
        while(y<j){temp.push_back(v[y]);y++;}
        for(int t=i;t<j;++t){
            v[t]=temp[t-i];
        }
    }
}









int main(){
    ifstream in("algsort.in");
    ofstream out("algsort.out");

    int n;in>>n;
    vector<int> v;v.reserve(n);
    for(int i=0;i<n;++i){
        int t;in>>t;v.push_back(t);
    }

    merge(0,n,v);

    for(int i=0;i<n;i++){
        out<<v[i]<<" ";
    }

}