Pagini recente » Istoria paginii runda/moisil_11-12/clasament | Cod sursa (job #2473985) | Istoria paginii runda/random/clasament | Clasament cel_mai_mare_olimpicar_2019_oni2007_zi1 | Cod sursa (job #2868714)
#include <bits/stdc++.h>
using namespace std;
int n,a[500005];
void IC(int st, int dr)
{
int m=(st+dr)/2;
int b[n+1],k=0;
int i=st,j=m+1;
while(i<=m&&j<=dr)
if(a[i]<a[j]) b[++k]=a[i++];
else b[++k]=a[j++];
while(i<=m) b[++k]=a[i++];
while(j<=dr) b[++k]=a[j++];
for(int i=st;i<=dr;i++)
a[i]=b[i-st+1];
}
void MS(int st, int dr)
{
if(dr-st<=1)
{
if(a[st]>a[dr]) swap(a[st],a[dr]);
return;
}
int m=(st+dr)/2;
MS(st,m);
MS(m+1,dr);
IC(st,dr);
}
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int main()
{
fin>>n;
for(int i=1;i<=n;i++) fin>>a[i];
MS(1,n);
for(int i=1;i<=n;i++) fout<<a[i]<<" ";
return 0;
}