Cod sursa(job #2966052)

Utilizator RobertlelRobert Robertlel Data 16 ianuarie 2023 18:19:56
Problema Radix Sort Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <vector>

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


int  n , v[10000005];

vector < int > a[12];

int main() {

    int a1 , b , c;
    f >> n >> a1 >> b >> c;
    v[1] = b;
    int maxi = 0;
    for (int i = 2 ; i <= n ; i++)
        v[i] = (1LL * a1 * v[i - 1] + b) % c , maxi = max (maxi , v[i]);
        c = 0;
        while (maxi)
            c++ , maxi /= 10;
        long long divider = 1;
        for (int j = 1 ; j <= c ; j++)
        {
            for (int i = 1 ; i <= n ; i++)
            {
                int u = (v[i] / divider) % 10;
                a[u].emplace_back (v[i]);
            }
            int k = 0;
            for (int i = 0 ; i <= 9 ; i++)
            {
                for (int j = 0 ;j < a[i].size() ; j++)
                {
                    k++;
                    v[k] = a[i][j];
                }
                a[i].clear ();
            }
                divider = divider * 10;
        }

        int k = 1;
        while (k <= n)
        {
            g << v[k] <<" ";
            k = k + 10;
        }

    return 0;
}