Cod sursa(job #2199204)

Utilizator deliricnagisa deliric Data 26 aprilie 2018 21:35:44
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <cstring>
using namespace std;
const int nmax = 1<<19;
const int dim = 8;
int n,i,v[nmax],aux[nmax],ap[1<<dim];
void radixsort(int p)
{
    memset(ap , 0 , sizeof(ap));
    int i,mask = (1 << dim) - 1;
    for (i = 1; i <= n; ++i) ap[(v[i] >> p) & mask]++;
    for (i = 1; i <= mask; ++i) ap[i] += ap[i-1];
    for (i = mask; i ; --i) ap[i] = ap[i-1];
    ap[0] = 0;
    for (i = 1; i <= n; ++i) aux[++ap[(v[i] >> p) & mask]] = v[i];
    for (i = 1; i <= n; ++i) v[i] = aux[i];
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;++i) cin>>v[i];
    for(int i=0;i<32;i+=dim) radixsort(i);
    for(int i=1;i<=n;++i) cout<<v[i]<<' ';
    return 0;
}