Pagini recente » Cod sursa (job #980596) | Cod sursa (job #934916) | Cod sursa (job #2924355) | Cod sursa (job #2060773) | Cod sursa (job #1814415)
#include <stdio.h>
int n;
int v[100001];
int inter[100001];
int answer = 0;
void interclasare (int l1, int r1, int l2, int r2) {
int k = 0;
int i1 = l1, i2 = l2;
while (i1 <= r1 && i2 <= r2) {
if (v[i1] <= v[i2]) {
inter[k++] = v[i1++];
}
else {
inter[k++] = v[i2++];
answer += (r1 - i1 + 1) % 9917;
}
}
while (i1 <= r1)
inter[k++] = v[i1++];
while (i2 <= r2)
inter[k++] = v[i2++];
int i;
for (i = l1; i <= r2; ++i)
v[i] = inter[i - l1];
}
void mergesort (int l, int r) {
int m = (l + r) >> 1;
if (l >= r)
return;
mergesort(l, m);
mergesort(m + 1, r);
interclasare (l, m, m + 1, r);
}
int main(int argc, char *argv[]) {
freopen ("algsort.in", "r", stdin);
freopen ("algsort.out", "w", stdout);
scanf("%d\n", &n);
int i;
for (i = 0; i < n; ++i)
scanf("%d ", &v[i]);
mergesort (0, n - 1);
for (i = 0; i < n; ++i)
printf ("%d ", v[i]);
return 0;
}