Pagini recente » Cod sursa (job #3141844) | Cod sursa (job #861618) | Cod sursa (job #2057658) | Cod sursa (job #435031) | Cod sursa (job #2276566)
#include <iostream>
#include <fstream>
using namespace std;
int max(int v[],int N)
{
int max=v[0],i;
for(i=1;i<=N;i++)
{
if(v[i]>max)
{
max=v[i];
}
}
return max;
}
void numarare(int v[], int N, int p)
{
int a[N],i,b[100000]={0};
for(i=1;i<=N;i++)
b[(v[i]/p)%10]++;
for(i=1;i<100000;i++)
b[i]+=b[i-1];
for(i=N;i>=1;i--)
{
a[b[(v[i]/p)%10]-1]=v[i];
b[(v[i]/p)%10]--;
}
for(i=1;i<=N;i++)
v[i]=a[i];
}
void radixsort(int v[],int N)
{
int i,nr=max(v,N);
for(i=1;nr/i>0;i=i*10)
{
numarare(v,N,i);
}
}
int main()
{
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int N,i,A,B,C,v[100000],p,q;
fin>>N>>A>>B>>C;
v[1]=B;
q=B;
for(i=2;i<=N;i++)
{
p=(A*q+B)%C;
q=p;
if((i-1)%10==0)
{
v[i]=p;
}
}
radixsort(v,N);
for(i=1;i<=N;i=i+11)
{
fout<<v[i]<<' ';
}
fin.close();
fout.close();
return 0;
}