Cod sursa(job #2557288)

Utilizator RedXtreme45Catalin RedXtreme45 Data 25 februarie 2020 18:32:59
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#include <cstring>
#define Nmax 10000001
using namespace std;
int n,a,b,c,v[Nmax],v1[Nmax],poz[258],max1,p,k,val;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int main()
{
    int i,j;
    fin>>n>>a>>b>>c;
    v[1]=b;
    max1=v[1];
    for (i=2;i<=n;i++)
    {
        v[i]=(a*v[i-1]+b)%c;
        max1=max(max1,v[i]);
    }
    while (max1)
    {
        k++;
        max1/=256;
    }
    for (i=1;i<=k;i++)
    {
        for (j=1;j<=n;j++)
        {
            val=(v[j]>>p);
            val=(val&255);
            poz[val]++;
        }
        for (j=1;j<=255;j++)
        {
            poz[j]+=poz[j-1];
        }
        for (j=1;j<=n;j++)
        {
            val=(v[j]>>p);
            val=(val&255);
            v1[poz[val]]=v[j];
            poz[val]--;
        }
        for (j=1;j<=n;j++)
        {
            v[j]=v1[j];
        }
        memset(poz,0,sizeof poz);
        p+=8;
    }
    for (i=1;i<=n;i+=10)
    {
        fout<<v[i]<<" ";
    }
    return 0;
}