Cod sursa(job #1795413)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 2 noiembrie 2016 13:22:58
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
queue <int> corn[10];
int n;
int v[500000];
FILE *g=fopen("radixsort.out","w");
void afish()
{
    for(int i=1;i<=n;i+=10)
        fprintf(g,"%d ",v[i]);


}
int main()
{  int a,b,c;
    int ok=false;

    FILE *f=fopen("radixsort.in","r");

    fscanf(f,"%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
     for(int i=2;i<=n;i++)
  {
    v[i] = (a*v[i-1] + b) % c;

  }

         long long divv=1;
    while(1)
    {

   ok=false;

        for(int i=1; i<=n; i++)
        {
                if(((v[i]/divv)%10)!=0) ok=true;
                corn[(v[i]/divv)%10].push(v[i]);



        }
        if(ok==false) {afish(); return 0; }
          int k=0;
        for(int i=0; i<=10; i++)
        {
            while(!corn[i].empty())
            {

                v[++k]=corn[i].front();
                corn[i].pop();

            }

        }


        divv=divv*10;


    }

    return 0;
}