Cod sursa(job #1800488)

Utilizator Mihaibv13Mihai Stoian Mihaibv13 Data 7 noiembrie 2016 20:14:09
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
queue <int> corn[10];
int n;
int v[10000100];
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;
    int step;
    for(step=1; step<=10; step++)
    {
        //cout<<step<<"\n";
        for(int i=1; i<=n; i++)
            corn[(v[i]/divv)%10].push(v[i]);
        int k=0;
        for(int i=0; i<=9; i++)
        {
            while(!corn[i].empty())
            {
                v[++k]=corn[i].front();
                corn[i].pop();
            }
        }
        divv=divv*10;
    }
    afish();
    return 0;
}