Pagini recente » Cod sursa (job #1983559) | Cod sursa (job #2045418) | Cod sursa (job #2190902) | Cod sursa (job #3191547) | Cod sursa (job #2059152)
#include <iostream>
#include <fstream>
#include <cmath>
#include <limits.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500040], n, l,m[709];
void citire()
{
int i;
f>>n;l=sqrt(n);
for(i=1;i<=n;++i)
f>>v[i];
f.close();
}
void afisare()
{
int i;
for(i=1;i<=n;++i)
g<<v[i]<<" ";
g<<endl;
g.close();
}
void minime ()
{ int i, j, x, h=1;
for(j=1;j<=l+1;j++)
for(i=1, x=INT_MAX;i<=l;i++, h++)
if(v[h]>0)
if(v[h]<x) m[j]=h, x=v[h];
}
void batog()
{
int i, h, ind, k=1;
minime();
while(k<=n)
{ h=INT_MAX;m[0]=0;
for(i=1;i<=l+1;i++)
if(h>v[m[i]] && v[m[i]]>0) ind=i,m[0]=m[i], h=v[m[i]];
g<<v[m[0]]<<' ';
v[m[0]]*=(-1);h=INT_MAX;
for(i=ind*l-1;i<=ind*l+l-2;i++)
if(v[i]>0)
if(v[i]<h) m[ind]=i, h=v[i];
k++;
}
g.close();
}
int main()
{
citire();
batog();
}