Cod sursa(job #2383182)

Utilizator mihneazarojanuMihnea Bogdan Zarojanu mihneazarojanu Data 19 martie 2019 09:59:52
Problema Sortare prin comparare Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NC=3, B=1000, VM=500000;

int n, v[VM], aux[VM], nr[B], poz[B];

void bucketsort(){
    int p=1;
    for(int i=0; i<NC; i++){
        for(int j=0; j<B; j++){
            nr[j]=0;//cate au pe poz curenta cifra j
        }
        for(int k=0; k<n; k++){
            int cif=v[k]/p%B;
            nr[cif]++;
        }
        for(int j=0; j<B; j++){
            nr[j]+=nr[j-1];//cate au pe poz curenta cifra mai mica <= j
            poz[j]=nr[j-1];
        }
        for(int k=0; k<n; k++){
            int cif=v[k]/p%B;
            aux[poz[cif]++]=v[k];
        }
        for(int k=0; k<n; k++){
            v[k]=aux[k];
        }
        p*=B;
    }
}

int main()
{
    in>>n;
    for(int i=0; i<n; i++){
        in>>v[i];
    }
    bucketsort();
    for(int i=0; i<n; i++){
        out<<v[i]<<" ";
    }
    return 0;
}