Cod sursa(job #1112598)

Utilizator MutescuMutescu Alexandru Mutescu Data 19 februarie 2014 21:18:40
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<algorithm>
#define Ser 10000005
#define py (1<<8)-1
using namespace std;
int  n,a,b,c,i;
int in[py],bi[Ser],v[Ser],mx;
void radixsort()
{
  int  lv = 1;

  while (mx/lv > 0)
  { for(i=0;i<10;i++)in[i]=0;

    for (i = 0; i < n; i++)
      in[(v[i]/lv)%10]++;
    for (i = 1; i < 10; i++)
     in[i] += in[i - 1];
    for (i = n - 1; i >= 0; i--)
      bi[--in[(v[i] / lv) % 10]] = v[i];
    for (i = 0; i < n; i++)
      v[i] = bi[i];
    lv *= 10;

  }
}

int main()

{ freopen ("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);

  scanf("%d%d%d%d", &n,&a,&b,&c);
  v[0]=b;
  mx= v[0];
   for (i =1; i < n; i++){
  v[i] = (a * v[i-1]+b) %c;
  if(mx<v[i])mx=v[i];}



  radixsort();


  for (i = 0; i < n; i+=10)
    printf("%d ", v[i]);


  return 0;
}