Pagini recente » Cod sursa (job #1869386) | Cod sursa (job #376651) | Cod sursa (job #1405728) | Cod sursa (job #168269) | Cod sursa (job #830830)
Cod sursa(job #830830)
#include <stdio.h>
#include <stdlib.h>
#define maxn 1500000
#define infinit 2147483647
long long a[500000],arb[maxn],poz,nod,val;
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int min(int a,int b)
{
if (a<b)
return a;
return b;
}
void creare(int nod, int st, int dr)
{
int mij;
if (st==dr)
{
arb[nod]=a[st];
return;}
else
{
mij=(st+dr)/2;
creare(nod*2,st,mij);
creare(nod*2+1,mij+1,dr);}
arb[nod]=min(arb[nod*2],arb[nod*2+1]);
}
void update(int nod, int st, int dr)
{
int mij;
if (st==dr)
{
arb[nod]=infinit;
return;}
else
{
mij=(st+dr)/2;
if (arb[2*nod]<=arb[nod])
update(2*nod,st,mij);
else
update(2*nod+1,mij+1,dr);
}
arb[nod]=min(arb[2*nod],arb[2*nod+1]);
}
int main()
{
int n,i;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
creare(1,1,n);
while (arb[1]!=infinit)
{
fprintf(g,"%d ",arb[1]);
update(1,1,n);}
return 0;
}