Cod sursa(job #2620692)

Utilizator anamaria2602Avram Ana Maria anamaria2602 Data 29 mai 2020 14:55:28
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int x,A[10000001];
void RadixSort(int A[],int Lungime)
{

    vector <long long> Bucket[256];
    int Max=0;
    int Nrcif=0;
    int shift =0;
    for (int i=1; i<=Lungime; i++)
    {
        if (A[i] > Max)
            Max = A[i];
    }
    while (Max!=0)
    {
        Nrcif++;
        Max = Max/256;
    }
    for (int cnt=1 ; cnt <= Nrcif; cnt++)
    {
        for (int i=1; i<= Lungime; i++)
            Bucket [ (A[i]>>shift)&255 ].push_back(A[i]);
        Lungime = 0;
        for (int i=0 ; i <= 255; i++)
        {
            for (size_t j=0; j<Bucket[i].size(); j++)
                A[++Lungime] = Bucket[i][j];
            Bucket[i].clear();
        }
        shift+= 8;
    }
}
int N,A1,B,C;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int main()
{
    f>>N>>A1>>B>>C;
    A[1]=B;
    for(int i=2;i<=N;i++)
        A[i] = (A1 * A[i-1] + B) % C;
    RadixSort(A,N);
    for(int i=1;i<=N;i+=10)
        g<<A[i]<<" ";
    return 0;
}