Pagini recente » Cod sursa (job #51691) | Cod sursa (job #1537570) | Cod sursa (job #1925864) | Cod sursa (job #1276066) | Cod sursa (job #1043931)
#include<fstream>
#include<cmath>
#include<limits.h>
#define dim 500100
#define lim 2000000000
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long v[dim],s[dim],p[dim];
long long Lung,l,i,j,minu,minu2,n,stop,pos,k;
inline int minim(long long a,long long 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;
long long 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;
}