Cod sursa(job #2700651)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 28 ianuarie 2021 12:35:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
#define maxBits 32
#define bitsPerStep 8
#define BASE (1 << bitsPerStep)
#define NMAX 500005

using namespace std;

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

const int mask = BASE - 1;
int v[NMAX], aux[NMAX], fr[NMAX], ind[NMAX];

void radixSort(int v[], int a[], int n, int bits)
{
    if(bits == maxBits)
        return;
    for(int i = 0; i < BASE; i++)
        fr[i] = 0;
    for(int i = 0; i < n; i++)
        fr[v[i] >> bits & mask]++;
    ind[0] = 0;
    for(int i = 1; i < BASE; i++)
        ind[i] = ind[i - 1] + fr[i - 1];
    for(int i = 0; i < n ; i++)
        a[ind[v[i] >> bits & mask]++] = v[i];
    radixSort(a, v, n, bits + bitsPerStep);

}

int main()
{
    int n;
    f >> n;
    for(int i = 0; i < n; i++)
        f >> v[i];
    radixSort(v, aux, n, 0);
    for(int i = 0; i < n; i++)
        g << v[i] << " ";
    return 0;
}