Cod sursa(job #2174455)

Utilizator aditzu7Adrian Capraru aditzu7 Data 16 martie 2018 12:08:08
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define nmax 10001*1001*10
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int v[nmax];
int getmax(int v[],int n){
int i,mmax=v[0];
for(i=1;i<n;i++) if(v[i]>mmax)
    mmax=v[i];
return mmax;


}
void cs(int v[],int n,int exp){
int a[n],i,c[10]={0,0,0,0,0,0,0,0,0,0};

for(i=0;i<n;i++)
    c[(v[i]/exp)%10]++;
for(i=1;i<10;i++) c[i]+=c[i-1];
for(i=n-1;i>=0;i--){
    a[c[(v[i]/exp)%10]-1]=v[i];
    c[(v[i]/exp)%10]--;

}
for(i=0;i<n;i++) v[i]=a[i];

}
void rs(int v[],int n){
int exp,m;
m=getmax(v,n);
for(exp=1;m/exp>0;exp*=10)
   {

cs(v,n,exp);
   }

}
 int main()
{int n,i,a,b,c;
f>>n>>a>>b>>c;
v[0]=b;
for(i=1;i<n;i++){
long long d=(a*v[i-1]+b)%c;
int e=(int)d;
v[i]=e;


}
   rs(v,n);
for(i=0;i<n;i+=10) g<<v[i]<<" ";
    return 0;
}