Cod sursa(job #2483724)

Utilizator mareadevarIonescu Andrei mareadevar Data 30 octombrie 2019 10:09:00
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

int n, i, v[500002], c, p;

int main ()
{
    ifstream fin ("algsort.in");
    ofstream fout("algsort.out");
    fin>>n;
    for (i=1; i<=n; i++)
        fin>>v[i];

    for (i=2; i<=n; i++)
    {

        c = i;
        p=i/2;
        while (p >= 1 && v[c] > v[p])
        {
            swap(v[c], v[p]);
            c = p;
            p/=2;
        }
    }

    for (i=n; i>=2; i--)
    {
        swap(v[1], v[i]);

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