Pagini recente » Cod sursa (job #342372) | Cod sursa (job #866974) | Cod sursa (job #681669) | Cod sursa (job #233666) | Cod sursa (job #1005934)
#include<iostream>
#include<fstream>
void merges(unsigned long long st, unsigned long long dr, unsigned long long *p)
{
if (st == dr)return;
unsigned long long m = (st + dr) / 2;
merges(st, m, p);
merges(m + 1, dr, p);
unsigned long long c[500000],j=st,i=m+1,s=0;
while (j <= m || i <= dr)
{
if (j > m){ c[s++] = *(p + i++); continue; }
if (i > dr){ c[s++] = *(p + j++); continue; }
if (*(p + j) > *(p + i))c[s++] = *(p + i++);
else c[s++] = *(p + j++);
}
for (j = st, i = 0; i < s; i++, j++)*(p + j) = c[i];}
int main()
{
unsigned long long a[500000],n;
std::ifstream f("algsort.in");
f >> n;
for (unsigned long long i = 0; i < n; i++)f >> a[i];
f.close();
merges(0,n-1,a);
std::ofstream g("algsort.out");
for (unsigned long long i = 0; i < n; i++)g<< a[i]<<" ";
g.close();
}