Pagini recente » Cod sursa (job #457326) | Cod sursa (job #2658909) | Cod sursa (job #374712) | Cod sursa (job #998945) | Cod sursa (job #1273605)
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
#include <deque>
#include <set>
#include <map>
#include <list>
#include <string>
#include <iterator>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <cstring>
using namespace std;
#define DMAX 10//500002
#define DMAX2 2000003
#define MOD 1000003
#define minm(a,b) a>b ? b : a
#define maxm(a,b) a<b ? b : a
int N, v[DMAX], cv[DMAX]; // 2*memorie
void merge(int * v, int bgn, int end){
int i = bgn, k = bgn, mij = (bgn + end)/2, j = mij+1;
while(i<=mij && j<=end){
if(v[i] < v[j]) cv[k++] = v[i++];
else cv[k++] = v[j++];
}
for(; i<=mij; i++) cv[k++] = v[i];
for(; j<=end; j++) cv[k++] = v[j];
for(i=bgn; i<=end; i++) v[i] = cv[i]; // 2*timp pentru merge
}
void mergesort(int * v, int bgn, int end){
int mij = (bgn + end)/2;
if(bgn < end){
mergesort(v, bgn, mij);
mergesort(v, mij+1, end);
merge(v, bgn, end); // lim lipsa: ...mij si mij+1...
}
}
int main(){
int i;
freopen("algsort.in", "r", stdin); // algsort
freopen("algsort.out", "w", stdout); // cautbin
scanf("%d", &N);
for(i=1; i<=N; i++) scanf("%d", &v[i]);
mergesort(v, 1, N);
for(i=1; i<=N; i++) printf("%d ", v[i]);
return 0;
}