Cod sursa(job #1477846)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 27 august 2015 10:44:09
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

void counting_sort(int A[], int N, int B[], int C[], const int MAX_V)
{
    for (int i = 0; i <= MAX_V; ++i)
        C[i] = 0;

    for (int i = 0; i < N; ++i)
        C[ A[i] ]++;

    for (int i = 1; i <= MAX_V; ++i)
        C[i] += C[i - 1];

    for (int i = 0; i < N; ++i)
        B[ --C[ A[i] ] ] = A[i];

    for (int i = 0; i < N; ++i)
        A[i] = B[i];
}

const int MAX_N = 500000;
const int MAX_V = 1000000;

int A[MAX_N + 1], B[MAX_N + 1], C[MAX_V + 1];
int N;

int main()
{
    ifstream in("algsort.in");
    ofstream out("algsort.out");

    in >> N;

    for (int i = 0; i < N; ++i)
        in >> A[i];

    counting_sort(A, N, B, C, MAX_V);

    for (int i = 0; i < N; ++i)
        out << A[i] << " ";

    return 0;
}