Pagini recente » Istoria paginii runda/prega_oji2k21/clasament | Cod sursa (job #2004519) | Cod sursa (job #304614) | Cod sursa (job #252045) | Cod sursa (job #2215856)
#include<cstdio>
#define MAX_N 500000
using namespace std;
int v[MAX_N], aux[MAX_N], n;
void read() {
FILE* fin = fopen("algsort.in","r");
fscanf(fin,"%d",&n);
for(int i = 0; i < n; i++)
fscanf(fin,"%d",&v[i]);
fclose(fin);
}
void mergeSort(int Begin, int End) {
int i, j, mid, k;
if(Begin < End) {
mid = (Begin + End) >> 1;
mergeSort(Begin,mid);
mergeSort(mid+1,End);
i = Begin;
j = mid + 1;
k = 0;
while(i <= mid && j <= End) {
if(v[i] <= v[j])
aux[k++] = v[i++];
else aux[k++] = v[j++];
}
while(i <= mid)
aux[k++] = v[i++];
while(j <= End)
aux[k++] = v[j++];
for(i = Begin; i <= End; i++)
v[i] = aux[i-Begin];
}
}
void write() {
FILE* fout = fopen("algsort.out","w");
for(int i = 0; i < n; i++)
fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fout);
}
int main() {
read();
mergeSort(0,n-1);
write();
return 0;
}