Pagini recente » Cod sursa (job #2009212) | Cod sursa (job #2791683) | Cod sursa (job #2276698) | Cod sursa (job #2014875) | Cod sursa (job #825399)
Cod sursa(job #825399)
#include <fstream>
#define INF ((1<<30) + (1<<29))
#define NMAX (1<<20)
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
inline int _min(int a,int b){if(a<b)return a;return b;}
int V[NMAX],N;
inline void Init()
{
for(int i = 0;i<NMAX;i++)
V[i] = INF;
}
void Update(int p)
{
V[p] = _min(V[p*2],V[p*2+1]);
if(p) Update(p/2);
}
void Insert(int p,int val)
{
V[p] = val;
Update(p/2);
}
int Erase(int val,int p)
{
if(V[2*p] == val)
Erase(val,2*p);
if(V[2*p+1] == val)
Erase(val,2*p+1);
V[p] = _min(V[2*p+1],V[2*p]);
}
int main ()
{
int i,x;
in>>N;
for(i=1,Init();i<=N;i++)
in>>x,Insert(i+N-1,x);
for(i=1;i<=N;out<<V[1]<<' ',i++,Erase(V[1],1));
return 0;
}