Cod sursa(job #1527711)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 18 noiembrie 2015 17:22:26
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<vector>

using namespace std;

vector<int> s[10];
int v[10000002],n,a,b,c,i,j,k,p,nr;

int main()
{
    freopen("radixsort.in","r",stdin);
    freopen("radixsort.out","w",stdout);
    scanf("%d%d%d%d",&n,&a,&b,&c);
    v[1]=b;
    for(i=2;i<=n;i++)
    {
        v[i]=(a*v[i-1]+b)%c;
    }
    p=1;
    for(i=1;i<=12;i++,p*=10)
    {
        for(k=0;k<=9;k++)
        {
            s[k].clear();
        }
        for(j=1;j<=n;j++)
        {
            s[(v[j]/p)%10].push_back(v[j]);
        }
        nr=0;
        for(k=0;k<=9;k++)
        {
            for(vector<int>::iterator it=s[k].begin();it!=s[k].end();it++)
            {
                v[++nr]=(*it);
            }
        }
    }
    for(i=1;i<=n;i+=10)
    {
        printf("%d ",v[i]);
    }
    return 0;
}