Pagini recente » Cod sursa (job #2752869) | Cod sursa (job #125424) | Cod sursa (job #356912) | Cod sursa (job #1998265) | Cod sursa (job #767906)
Cod sursa(job #767906)
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <fstream>
#include <algorithm>
#define f sorting_like_a_boss
const int maxn = 500010;
using namespace std;
int A[maxn], N, A2[maxn];
void sorting_like_a_boss(int left, int right) {
if(left >= right) return ;
int mid = (left + right) >> 1;
sorting_like_a_boss(left, mid);
sorting_like_a_boss(mid + 1, right);
int curr = left;
int i, j;
for(i = left, j = mid + 1; i <= mid && j <= right; ) {
if(A[i] <= A[j]) {
A2[curr++] = A[i];
++i; continue;
}
if(A[j] < A[i]) {
A2[curr++] = A[j];
++j; continue;
}
}
for(; i <= mid; ++i) A2[curr++] = A[i];
for(; j <= right; ++j) A2[curr++] = A[j];
for(int i = left; i <= right; ++i)
A[i] = A2[i];
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> N;
srand(time(NULL));
for(int i = 1; i <= N; ++i)
fin >> A[i];
random_shuffle(A + 1, A + N + 1);
sorting_like_a_boss(1, N);
for(int i = 1; i <= N; ++i)
fout << A[i] << " " ;
return 0;
}