Cod sursa(job #2913559)

Utilizator merinamarinescuMarinescu Merina merinamarinescu Data 15 iulie 2022 11:10:38
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,m,c,p,v[500005];
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    for(int i=2;i<=n;i++)
    {
        int j=i;
        while(j>1 && v[j]>v[j/2])
        {
            swap(v[j],v[j/2]);
            j/=2;
        }
    }
    for(int i=n;i>=2;i--)
    {
        swap(v[i],v[1]);
        p=1;
        c=2;
        while(c<=i-1)
        {
            if(c+1<=i-1 && v[c+1]>v[c])
            {
                c++;
            }
            if(v[c]>v[p])
            {
                swap(v[c],v[p]);
            }
            else
            {
                break;
            }
            p=c;
            c=2*p;
        }
    }
    for(int i=1;i<=n;i++)
    {
        fout<<v[i]<<" ";
    }
    return 0;
}