Pagini recente » Cod sursa (job #2326969) | Cod sursa (job #1340947) | Cod sursa (job #2174233) | Cod sursa (job #2684493) | Cod sursa (job #1043929)
#include<fstream>
#include<cmath>
#include<limits.h>
#define dim 500100
#define lim 2000000000
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[dim],s[dim],p[dim];
int Lung,l,i,j,minu,minu2,n,stop,pos,k;
inline int minim(int a,int b) {
if(a<b)
return a;
return b;
}
int main () {
f>>n;
l=sqrt(n);
for(i=0;i<n;++i)
f>>v[i];
Lung=n/l;
for(i=0;i<=Lung;++i)
s[i]=lim;
for(i=0;i<n;++i)
if(s[i/l]>v[i]) {
s[i/l]=v[i];
p[i/l]=i;
}
for(i=0;i<n;++i) {
minu=lim;
for(j=0;j<=Lung;++j) {
if(minu>s[j]) {
minu=s[j];
k=p[j];
}
}
g<<minu<<" ";
v[k]=lim;
int t=k/l;
s[k/l]=lim;
for(j=l*t;j<(l)*(t+1) && j<n ;++j) {
if(v[j]<s[t] ) {
p[t]=j;
s[t]=v[j];
}
}
}
return 0;
}