Cod sursa(job #833856)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 13 decembrie 2012 09:59:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<cstdio>
#include<algorithm>
using namespace std;
# define nmax 524288

#define inf 2147483648-1
int arb[3*nmax+1],maxim,op,poz,a,b,n,m,val;



void update (int nod,int st,int dr)
{
    int pivot;
    if (st==dr)
        {arb[nod]=val; return ;}

        pivot=(st+dr)/2;
        if (poz<=pivot) update(2*nod,st,pivot);
        else
            update(2*nod+1,pivot+1,dr);
        arb[nod]=min(arb[2*nod],arb[2*nod+1]);

}


void query (int nod,int st,int dr)
{
    if (st==dr)
    {  arb[nod]=inf; return;}

   int pivot=(st+dr)/2;
     if (val==arb[nod*2]) query(2*nod,st,pivot);
     else
         //if (val==arb[nod*2+1])
             query(2*nod+1,pivot+1,dr);

     arb[nod]=min(arb[2*nod],arb[2*nod+1]);

}


int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    int x,i;
    for (i=1;i<=n;++i)
        {
            scanf("%d",&x);
            poz=i; val=x;
            update(1,1,n);
    }



   for (i=1;i<=n;++i)
   {
       printf("%d ",arb[1]);
       val=arb[1];
       query(1,1,n);
   }

}