Cod sursa(job #1754798)

Utilizator sulzandreiandrei sulzandrei Data 8 septembrie 2016 18:53:35
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <unordered_map>
using namespace std;

#define nmax 500003


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

void numsort(int *A,int n)
{
    int max_el = *max_element(A,A+n);
    int B[nmax];
    unordered_map<int,int>C;
    for(int i = 0 ; i <= max_el; i ++)
        C[i] = 0;
    for(int i = 0 ; i < n ; i++)
        C[A[i]]++;
    for(int i =1 ; i<= max_el; i++)
        C[i] = C[i-1]+C[i];
    for(int i = 0 ; i < n ; i++)
    {
        B[C[A[i]]-1] = A[i];
        C[A[i]]--;
    }
    for(int i = 0 ; i< n ; i++)
        A[i] = B[i];
}


int main()
{
    int n,i;
    in >> n;

    int v[n+5];
    for( i = 0 ; i < n ; i++)
        in >> v[i];
        numsort(v,n);
    //LDS_byte_radixsort(v,n);
    for(int i = 0 ; i < n ; i ++)
        out << v[i] << " ";
    return 0;
}