Pagini recente » Cod sursa (job #1193901) | Cod sursa (job #590349) | Cod sursa (job #2892985) | Cod sursa (job #1124206) | Cod sursa (job #2622272)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
int getMax(int arr[], long long n)
{
int m = 0;
for (long long i = 0; i < n; i++)
if (arr[i] > m)
m = arr[i];
return m;
}
void countSort(int arr[], long long n, int pas)
{
int aux[n];
long long i = 0, count[10] = {0};
while(i < n)
{
count[ (arr[i]/pas)%10 ]++;
i += 1;
}
i=1;
while(i<10)
{
count[i] += count[i - 1];
i += 1;
}
i = n-1;
while(i>=0)
{
aux[count[ (arr[i]/pas)%10 ] - 1] = arr[i];
count[ (arr[i]/pas)%10 ]--;
i -= 1;
}
i = 0;
while(i < n)
{
arr[i] = aux[i];
i+=1;
}
}
void radixsort(int arr[], int n)
{
int m = getMax(arr, n);
for (int pas = 1; m/pas > 0; pas *= 10)
countSort(arr, n, pas);
}
int v[10000001];
int main()
{
long long n, a, b, c;
in >> n >> a >> b >> c;
v[0] = b;
long long j = 1;
while (j < n)
{
v[j] = (a * v[j - 1] + b) % c;
j += 1;
}
radixsort(v, n);
j = 0;
while (j < n)
{
out << v[j] << " ";
j += 10;
}
return 0;
}