Cod sursa(job #2276566)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 noiembrie 2018 21:09:33
Problema Radix Sort Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
int max(int v[],int N)
{
    int max=v[0],i;
    for(i=1;i<=N;i++)
    {
        if(v[i]>max)
        {
            max=v[i];
        }
    }
    return max;
}
void numarare(int v[], int N, int p) 
{ 
    int a[N],i,b[100000]={0}; 
    for(i=1;i<=N;i++) 
        b[(v[i]/p)%10]++; 
    for(i=1;i<100000;i++) 
        b[i]+=b[i-1]; 
    for(i=N;i>=1;i--) 
    { 
        a[b[(v[i]/p)%10]-1]=v[i]; 
        b[(v[i]/p)%10]--; 
    } 
    for(i=1;i<=N;i++) 
        v[i]=a[i]; 
} 
void radixsort(int v[],int N)
{
    int i,nr=max(v,N);
    for(i=1;nr/i>0;i=i*10)
    {
        numarare(v,N,i);
    }
}
int main()
{
   ifstream fin("radixsort.in");
   ofstream fout("radixsort.out");
   int N,i,A,B,C,v[100000],p,q;
   fin>>N>>A>>B>>C;
   v[1]=B;
   q=B;
   for(i=2;i<=N;i++)
   {
        p=(A*q+B)%C;
        q=p;
        if((i-1)%10==0)
        {
        v[i]=p;
        }
   }
   radixsort(v,N);
   for(i=1;i<=N;i=i+11)
   {
       fout<<v[i]<<' ';
   }
   fin.close();
   fout.close();
   return 0;
}