Cod sursa(job #2609397)

Utilizator teodortatomirTeodor Tatomir teodortatomir Data 2 mai 2020 16:09:59
Problema Radix Sort Scor 30
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#define NMAXX 10000001

int v[NMAXX],aux[NMAXX],poz[NMAXX],nr[10];
int main(){
  FILE *fin,*fout;
  int n,a,b,c,i,nrtot,x;

  fin=fopen("radixsort.in", "r");
  fout=fopen("radixsort.out", "w");
  fscanf(fin, "%d%d%d%d", &n,&a,&b,&c);
  v[0]=b;
  for(i=1;i<n;i++)
    v[i]=((long long)a*v[i-1]+b)%c;
  nrtot=1;
  for(x=0;x<11;x++){
    for(i=0;i<10;i++)
      nr[i]=0;
    for(i=0;i<n;i++)
      nr[v[i]/nrtot%10]++;
    poz[0]=0;
    for(i=1;i<10;i++)
      poz[i]=poz[i-1]+nr[i-1];
    for(i=0;i<n;i++)
      aux[poz[v[i]/nrtot%10]++]=v[i];
    for(i=0;i<n;i++)
      v[i]=aux[i];
    nrtot*=10;
  }
  fclose(fin);

  for(i=0;i<n;i+=10)
    fprintf(fout, "%d ", v[i]);
  fclose(fout);
  fprintf(fout, "\n");
  return 0;
}