Pagini recente » Cod sursa (job #2017435) | Cod sursa (job #1884025) | Cod sursa (job #2197584) | Cod sursa (job #3030440) | Cod sursa (job #825414)
Cod sursa(job #825414)
#include <fstream>
#define INF 2147483647
#define NMAX ((1<<20) + (1<<19))
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)
{
V[p] = INF;
if(2*p<=N+N)
{
if(V[2*p] == val)
Erase(val,2*p);
else
if(2*p+1<=N+N)
{
if(2*p+1<=N+N)
Erase(val,2*p+1);
}
}
if(2*p<=N+N)
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);
if(x>=INF)return 543643;
}
for(i=1;i<=N;out<<V[1]<<' ',i++,Erase(V[1],1));
return 0;
}