Pagini recente » Cod sursa (job #2844699) | Cod sursa (job #2815501) | Cod sursa (job #1156800) | Cod sursa (job #1327972) | Cod sursa (job #1317629)
#include<iostream>
#include <math.h>
#include <fstream>
#define nmax 500000
using namespace std;
ifstream f("batog.in");
ofstream g("batog.out");
int a[nmax], v[nmax], b[800];
int n,w,m,r;
int minim(int u)
{
int poz=u*m+1;
int o=a[u*m+1];
int j=u*m+2;
while(j<=(u+1)*m && j<=n)
{if(o>a[j])
{o=a[j]; poz=j;}
j++;}
a[poz]=INFINITY;
return o;
}
int main()
{
r=0;
f>>n;
int i;
for(i=1;i<=n;i++)
f>>a[i];
m=sqrt(n);
w=m;
while(w*m<n)
w++;
for (i=0;i<w;i++)
b[i]=minim(i);
for (i=1;i<=n;i++)
{int p=0;
int o=b[0];
for (int j=1;j<w;j++)
if(o>b[j])
{o=b[j]; p=j;}
v[r]=o;r++;
b[p]=minim(p);}
for (i=0;i<n;i++)
g<<v[i]<<' ';
f.close();
g.close();
return 0;
}