Pagini recente » Cod sursa (job #1571046) | Cod sursa (job #2221733) | Cod sursa (job #2622948) | Cod sursa (job #2283100) | Cod sursa (job #1043920)
#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];
int Lung,l,i,j,minu,minu2,n,stop,pos;
inline int minim(int a,int b) {
if(a<b)
return a;
return b;
}
int main () {
f>>n;
l=sqrt(n);
if(l*l!=n)
l++;
for(i=0;i<n;++i){
f>>v[i];
pos=i/l;
if(!s[pos])
s[pos]=v[i];
else
s[pos]=minim(s[pos],v[i]);
}
Lung=(n)/l;
for(i=0;i<n;++i) {
minu=lim;
for(j=0;j<=Lung;++j) {
if(s[j]<minu){
minu=s[j];
pos=j;
}
}
g<<minu<<" ";
stop=0;
minu2=lim;
for(j=l*(pos);j<(pos+1)*l && j<n;++j) {
if(v[j]==minu && stop==0) {
v[j]=lim;
stop=1;
}
else {
if(v[j]<=minu2) {
minu2=v[j];
}
}
}
s[pos]=minu2;
}
}