Cod sursa(job #3183187)

Utilizator go_MiMihai ghitulea go_Mi Data 10 decembrie 2023 22:11:12
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>


using namespace std;

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

const int nm = 1e7;
const int dg = 10;


int n;
int curi[nm];
int fq[dg], pos[dg];
int nei[nm];

void step (int po){
  for (int d = 0; d < dg; d++)
    fq[d] = 0;

  for (int i = 0; i < n; i++)
    fq[curi[i] / po % 10]++;

  pos[0] = 0;
  for (int d = 1; d < dg; d++)
    pos[d] = pos[d - 1] + fq[d - 1];

  for (int i = 0; i < n; i++){
      nei[pos[curi[i] / po % 10]] = curi[i];
      pos[curi[i] / po % 10]++;
    }

  for (int i = 0; i < n; i++)
    curi[i] = nei[i];
}

void sort (void) {
    int maxValue = 0;
    for (int i = 0; i < n; i ++)
       maxValue = max (maxValue, curi[i]);

    for (long long power = 1; power <= maxValue; power *= 10) //
       step (power);
}

int main (){
  int n;
  in >> n;
  for (int i = 0; i < n; i++)
    in >> curi[i];


  return 0;
}