Cod sursa(job #2356687)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 26 februarie 2019 20:53:37
Problema Radix Sort Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

int i,j,n,a[1000010];
long long val,A,B,C;
stack<pair<int,int> > St0,St1,St2;

int main()
{
    f>>n>>A>>B>>C;
    St2.push({B,B});
    for(i=2;i<=n;i++)
        St2.push({(St2.top().first*A+B)%C,(St2.top().first*A+B)%C});
    for(i=1;i<=33;i++)
    {
        while(St2.size())
        {
            if(St2.top().second&1)
                St1.push({St2.top().first,St2.top().second>>1});
            else
                St0.push({St2.top().first,St2.top().second>>1});
            St2.pop();
        }
        while(St0.size())
        {
            St2.push(St0.top());
            St0.pop();
        }
        while(St1.size())
        {
            St2.push(St1.top());
            St1.pop();
        }
    }
    int j=(n-1)/10+1;
    for(i=n;i>=1;i--)
    {
        if(i%10==1)a[j--]=St2.top().first;
        St2.pop();
    }
    j=(n-1)/10+1;
    for(i=1;i<=j;i++)
        cout<<a[i]<<' ';
    return 0;
}