Cod sursa(job #1700181)

Utilizator Bodo171Bogdan Pop Bodo171 Data 9 mai 2016 19:03:12
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include<fstream>
using namespace std;
int a[2000055],n,x,pozitie,rasp,i;
int minim(int a,int b)
{
    if(a==-1) return b;
    if(b==-1) return a;
    return min(a,b);
}
void update(int nod,int l,int r,int poz,int val)
{
    if(l==r)
    {
        a[nod]=val;
        return;
    }
    int m=(l+r)/2;
    if(poz<=m) update(2*nod,l,m,poz,val);
    else update(2*nod+1,m+1,r,poz,val);
    a[nod]=minim(a[2*nod],a[2*nod+1]);
}
int getmn(int nod,int l,int r)
{
    if(l==r)
    {
        pozitie=l;
        return a[nod];
    }
    int m=(l+r)/2;
    if(a[2*nod]==minim(a[2*nod],a[2*nod+1])) rasp=getmn(2*nod,l,m);
    else rasp=getmn(2*nod+1,m+1,r);
    return rasp;
}
int main()
{
     ifstream f("algsort.in");
     ofstream g("algsort.out");
     f>>n;
     for(i=1;i<=n;i++)
     {
         f>>x;
         update(1,1,n,i,x);
     }
     for(i=1;i<=n;i++)
     {
         x=getmn(1,1,n);
         update(1,1,n,pozitie,-1);
         g<<x<<' ';
     }
    return 0;
}