Pagini recente » Cod sursa (job #2107523) | Cod sursa (job #2345284) | Cod sursa (job #2773221) | Cod sursa (job #926180) | Cod sursa (job #2622260)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int getMax(int arr[], int n)
{
int m = 0;
for (int i = 0; i < n; i++)
if (arr[i] > m)
m = arr[i];
return m;
}
void countSort(int arr[], int n, int pas)
{
int aux[n];
int i, count[10] = {0};
for (i = 0; i < n; i++)
count[ (arr[i]/pas)%10 ]++;
for (i = 1; i < 10; i++)
count[i] += count[i - 1];
for (i = n - 1; i >= 0; i--)
{
aux[count[ (arr[i]/pas)%10 ] - 1] = arr[i];
count[ (arr[i]/pas)%10 ]--;
}
for (i = 0; i < n; i++)
arr[i] = aux[i];
}
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()
{
int n, a, b, c;
in >> n >> a >> b >> c;
v[0] = b;
int i = 1;
while (i <= n)
{
v[i] = (a * v[i - 1] + b) % c;
i += 1;
}
radixsort(v, n);
i = 0;
while (i < n)
{
out << v[i] << " ";
i += 10;
}
return 0;
}