Pagini recente » Cod sursa (job #3266117) | Cod sursa (job #1493022) | Cod sursa (job #3153303) | Cod sursa (job #2516599) | Cod sursa (job #1058938)
#include<fstream>
#define maxn 500005
#define inf 999999999
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
long long i,n,a[maxn],z[maxn];
long long k,q,poz,j;
int main(){
//smenul lui Batog
fi>>n;
k=1;
while(k*k<n)k++;// impart vectorul in intervale de lungime sqrt(n)
for(i=0;i<k;i++) z[i]=inf;
for(i=0;i<n;i++){
fi>>a[i];
if(a[i]<z[i/k])z[i/k]=a[i];
}
for(j=0;j<n;j++)
{
poz=0; q=inf;
for(i=0;i<k;i++) if(z[i]<q){q=z[i]; poz=i;}
fo<<q<<" ";
i=poz*k;
while(i<n && i<(poz+1)*k && a[i]!=q) i++;
a[i]=inf;
z[poz]=inf;
i=poz*k;
while(i<n && i<(poz+1)*k){
if(a[i]<z[poz]) z[poz]=a[i];
i++;
}
}
fi.close();
fo.close();
return 0;
}