Cod sursa(job #2531632)

Utilizator victorzarzuZarzu Victor victorzarzu Data 26 ianuarie 2020 15:22:08
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;
int p = 31999,n;
char buffer[32010];
int a[500000];
ofstream g("algsort.out");

void inc()
{
    p++;
    if(p == 32000)
    {
        fread(buffer,1,32000,stdin);
        p = 0;
    }
}

void read(int &n)
{
    n = 0;
    while(buffer[p] < '0' || buffer[p] > '9')
        inc();
    while(buffer[p] >= '0' && buffer[p] <= '9')
    {
        n = n * 10 + buffer[p] - '0';
        inc();
    }
}

void Read()
{
    freopen("algsort.in","r",stdin);
    read(n);
    for(int i = 0;i < n;++i)
        read(a[i]);
}

int partition(int a[],int low,int high)
{
    int pivot = a[high];
    int i = low - 1;

    for(int j = low;j < high;++j)
        if(a[j] < pivot)
        {
            ++i;
            swap(a[i],a[j]);
        }
    swap(a[i + 1],a[high]);
    return (i + 1);
}

void QuickSort(int a[],int low,int high)
{
    if(low < high)
    {
        int pi = partition(a,low,high);

        QuickSort(a,low,pi - 1);
        QuickSort(a,pi + 1,high);
    }
}

void Print()
{
    for(int i = 0;i < n;++i)
        g<<a[i]<<" ";
    g.close();
}

int main()
{
    Read();
    QuickSort(a,0,n - 1);
    Print();
    return 0;
}