Cod sursa(job #2108215)

Utilizator madalin98Gherghe Madalin madalin98 Data 17 ianuarie 2018 23:46:48
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[600005],a[600005];
int update(int pos,int nod,int l,int r)
{
    int mid=(l+r)/2;
    if(r==l){
        a[nod]=pos;
        return pos;
    }
        if(pos<=mid)update(pos,2*nod,l,mid);
            else update(pos,2*nod+1,mid+1,r);
        if(v[a[2*nod]]<v[a[2*nod+1]])a[nod]=a[2*nod];
          else a[nod]=a[2*nod+1];
}
int main()
{
    int n,i,maxim=0;
    f>>n;
    for(i=1;i<=n;i++)
        {f>>v[i];
        if(v[i]>maxim)maxim=v[i];}
    for(i=1;i<=n;i++)
        update(i,1,1,n);
    for(i=1;i<=n;i++)
    {
        g<<v[a[1]]<<" ";
        v[a[1]]=maxim;
        update(a[1],1,1,n);
    }
    return 0;
}