Pagini recente » Cod sursa (job #2086093) | Cod sursa (job #1959138) | Cod sursa (job #2657103) | Cod sursa (job #419688) | Cod sursa (job #2620692)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int x,A[10000001];
void RadixSort(int A[],int Lungime)
{
vector <long long> Bucket[256];
int Max=0;
int Nrcif=0;
int shift =0;
for (int i=1; i<=Lungime; i++)
{
if (A[i] > Max)
Max = A[i];
}
while (Max!=0)
{
Nrcif++;
Max = Max/256;
}
for (int cnt=1 ; cnt <= Nrcif; cnt++)
{
for (int i=1; i<= Lungime; i++)
Bucket [ (A[i]>>shift)&255 ].push_back(A[i]);
Lungime = 0;
for (int i=0 ; i <= 255; i++)
{
for (size_t j=0; j<Bucket[i].size(); j++)
A[++Lungime] = Bucket[i][j];
Bucket[i].clear();
}
shift+= 8;
}
}
int N,A1,B,C;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int main()
{
f>>N>>A1>>B>>C;
A[1]=B;
for(int i=2;i<=N;i++)
A[i] = (A1 * A[i-1] + B) % C;
RadixSort(A,N);
for(int i=1;i<=N;i+=10)
g<<A[i]<<" ";
return 0;
}