Pagini recente » Cod sursa (job #1480842) | Cod sursa (job #1199097) | Cod sursa (job #576877) | Cod sursa (job #2294704) | Cod sursa (job #1043070)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
int v[500001],a[50000];
int main()
{
int i,n,x,q,min,poz,m,ok,j,l;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
q=sqrt(n);
//cout<<q<<endl;
for (i=1; i<=n; i++)
{
f>>v[i];
if (a[(i+q-1)/q]==0) a[(i+q-1)/q]=v[i];
else
if (a[(i+q-1)/q]>v[i]) a[(i+q-1)/q]=v[i];
//cout<<a[i/q]<<" ";
}
//for (i=1; i<=n/q; i++) cout<<a[i]<<" ";
for (i=1; i<=n; i++)
{
min=999999;
for (j=1; j<=n/q; j++)
if (a[j]<min) {min=a[j]; poz=j;}
g<<min<<" ";
ok=1;
m=999999;
for (j=(poz-1)*q+1; j<=poz*q; j++)
{
if (j<=n)
if (v[j]==min && ok==1) {v[j]=999999; ok=0;}
else if (v[j]<m) m=v[j];
}
a[poz]=m;
//cout<<endl;
//for (l=1; l<=n; l++) cout<<v[l]<<" ";
}
return 0;
}