Cod sursa(job #1755003)

Utilizator meriniucrMeriniuc Razvan- Dumitru meriniucr Data 9 septembrie 2016 10:23:01
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <queue>

int n;
int arr[10000000];
int zero[10000000];
int one[10000000];

void
go()
{
    int index;
    int j;
    int bit;
    int iz;
    int io;

    for (index = 0; index < 31; ++index)
    {
        bit = 1 << index;
        iz = 0;
        io = 0;
        for (j = 0; j < n; ++j)
        {
            if ( bit & arr[j] )
            {
                one[io++] = arr[j];
            }
            else
            {
                zero[iz++] = arr[j];
            }
        }

        for (j = 0; j < iz; ++j)
        {
            arr[j] = zero[j];
        }

        for (; j < n; ++j)
        {
            arr[j] = one[j - iz];
        }
    }
}

int main()
{
    int index;
    long long a;
    long long b;
    long long c;

    std::ifstream mama("radixsort.in");
    std::ofstream tata("radixsort.out");

    mama >> n;
    mama >> a >> b >> c;

    arr[0] = b;
    for (index = 1; index < n; ++index)
    {
        arr[index] = (a * arr[index - 1] + b) % c;
    }

    go();

    for (index = 0; index < n; index += 10)
    {
        tata << arr[index] << ' ';
    }

    return 0;
}