Pagini recente » Cod sursa (job #2487502) | Cod sursa (job #1371291) | Cod sursa (job #2594547) | Cod sursa (job #39038) | Cod sursa (job #1315569)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
int a[500005],s[710],n,r,t,v[500005],k=0;
int minim(int j)
{
int m,p,i;
m=a[j*r+1]; p=j*r+1;
for(i=j*r+2;i<=(j+1)*r&&i<=n;i++)
if(m>a[i]) {m=a[i]; p=i;}
a[p]=INFINITY;
return m;
}
void caut()
{
int m=s[0],p=0,i;
for(i=1;i<t;i++)
if(m>s[i]) {m=s[i]; p=i;}
v[k++]=m;
s[p]=minim(p);
}
int main()
{
int i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++) f>>a[i];
r=int(sqrt(n));
t=n/r;
for(i=0;i<t;i++) s[i]=minim(i);
for(i=1;i<=n;i++) caut();
for(i=0;i<n;i++) g<<v[i]<<" ";
f.close();
g.close();
return 0;
}