Pagini recente » Cod sursa (job #1965755) | oni2009_z1 | Cod sursa (job #2769090) | Cod sursa (job #571682) | Cod sursa (job #2545116)
#include <fstream>
std::ifstream f("algsort.in");
std::ofstream g("algsort.out");
const int NMAX = 500'005;
int n,v[NMAX],w[NMAX];
void merge(int *v,int left,int right){
int mid = (left + right) / 2;
int i = left;
int j = mid + 1;
int k = 0;
while(i <= mid && j <= right){
if(v[i] <= v[j])
w[++k] = v[i++];
else
w[++k] = v[j++];
}
while(i <= mid)
w[++k] = v[i++];
while(j <= right)
w[++k] = v[j++];
for(int i = left;i <= right;++i)
v[i] = w[i - left + 1];
}
void mergesort(int *v,int left,int right){
if(left < right){
int mid = (left + right) / 2;
mergesort(v,left,mid);
mergesort(v,mid + 1,right);
merge(v,left,right);
}
}
int main(){
f >> n;
for(int i = 1;i <= n;++i)
f >> v[i];
mergesort(v,1,n);
for(int i = 1;i <= n;++i)
g << v[i] << ' ';
return 0;
}