Cod sursa(job #2612185)

Utilizator @dinescu.mateiDinescu Matei @dinescu.matei Data 8 mai 2020 16:20:43
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <list>
#include <cmath>
using namespace std;

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


void radixsort(int *arr, int n, int max) {
   int i, j, m, p = 1, index, temp, count = 0;
   list<int> pocket[10];
   for(i = 0; i< max; i++) {
      m = pow(10, i+1);
      p = pow(10, i);
      for(j = 0; j<n; j++) {
         temp = arr[j]%m;
         index = temp/p;
         pocket[index].push_back(arr[j]);
      }
      count = 0;
      for(j = 0; j<10; j++) {

         while(!pocket[j].empty()) {
            arr[count] = *(pocket[j].begin());
            pocket[j].erase(pocket[j].begin());
            count++;
         }
      }
   }
}
int main()
{

    int n, a, b, c;

    f>>n>>a>>b>>c;

    int v[n];

    v[0] = b;
    for(int i=1;i<n;i++)
        v[i] = (a * v[i-1] + b) % c;

    radixsort(v,n,3);
    for(int i = 0;i<n;i += 10)
        g<<v[i]<<" ";
    return 0;
}