Cod sursa(job #2622733)

Utilizator miramaria27Stroie Mira miramaria27 Data 1 iunie 2020 18:49:08
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");

void counting(long long a[], int times, long long ma, long long n)
{
    long long nr[10]={0};
    long long result[n+1];
    for(long long i=0;i<n;i++)
        {  int cifra=(a[i]/times)%10;
           nr[cifra]++;
        }
    for(long long i=1;i<n;i++)
        nr[i]+=nr[i-1];

    for(long long i=n-1;i>=0;i--)
    {
        int cifra=(a[i]/times)%10;
        result[nr[cifra]-1]=a[i];
        nr[cifra]--;
    }
    for(int i=0;i<n;i++)
        a[i]=result[i];

}
void radixsort(long long a[], long long n)
{
   long long ma=-1;
   for(long long i=0;i<n;i++)
    if(ma<a[i])ma=a[i];
   int times=1;
   while(ma/times>0)
   {
       counting(a,times,ma,n);
       times*=10;
   }
}
int main()
{
    long long N,A,B,C;
    in>>N>>A>>B>>C;
    long long a[N+1];
    a[0]=B;
    for(long long i=1;i<N;i++)
       a[i]=(A*a[i-1]+B)%C;
    for(long long i=0;i<N;i++)
        cout<<a[i]<<" ";
    radixsort(a,N);
     for(long long i=0;i<N;i+=10)
        out<<a[i]<<" ";
    return 0;
}