Cod sursa(job #346936)

Utilizator csizMocanu Calin csiz Data 10 septembrie 2009 11:33:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>


using namespace std;

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

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

    }
}



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

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

    merge(0,n,temp,v);

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

}