Pagini recente » Cod sursa (job #456865) | Cod sursa (job #2567255) | Cod sursa (job #2564036) | Cod sursa (job #1146525) | Cod sursa (job #1050286)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int n_max=500001;
const int mx=(1<<31)-1;
int n, i, v[n_max], m[n_max], p[n_max], l, k, mini, pmini;
void citire()
{
cin>>n;
l=sqrt(n);
k=n/l;
if(n%l) k++;
for(i=0; i<k; i++) m[i]=mx;
mini=mx;
for(i=0; i<n; i++)
{
cin>>v[i];
if(v[i]<m[i/l])
{
m[i/l]=v[i];
p[i/l]=i;
}
}
}
void afis(int mini)
{
int i;
for(i=0; i<k; i++)
if(m[i]<mini)
{
mini=m[i];
pmini=p[i];
}
cout<<mini<<" ";
v[pmini]=mx;
m[pmini/l]=mx;
for(i=pmini/l*l; i<pmini/l*l+l; i++)
if(v[i]<m[i/l])
{
m[i/l]=v[i];
p[i/l]=i;
}
}
int main()
{
citire();
for(i=0; i<n; i++) afis(mini);
return 0;
}