Cod sursa(job #2608461)

Utilizator KrosomAngelo Barbu Krosom Data 1 mai 2020 13:18:17
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

void heapify(int *scores, int n, int i)
{
    int aux;
    int largest = i;
    int l = 2*i + 1;
    int r = 2*i + 2;\

    if (l < n && scores[l] > scores[largest])
        largest = l;

    if (r < n && scores[r] > scores[largest])
        largest = r;

    if (largest != i)
    {
        aux = scores[i];
        scores[i] = scores[largest];
        scores[largest] = aux;

        heapify(scores, n, largest);
    }
}

void sortScores(int * scores, int n)
{
    int aux;
    for (int i = n / 2 - 1; i >= 0; i--)
        heapify(scores, n, i);

    for (int i = n - 1; i > 0; i--)
    {
        aux = scores[0];
        scores[0] = scores[i];
        scores[i] = aux;

        heapify(scores, i, 0);
    }
    for (int i = 0; i < n; i++)
    {
        g << scores[i] << " ";
    }
}

int main()
{
    int n;
    f >> n;

    int *scores = (int *) malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
        f >> scores[i];

    sortScores(scores, n);
    free(scores);
    return 0;
}