Cod sursa(job #1207997)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 14 iulie 2014 14:13:57
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#include <algorithm>
#include <deque>
#include <vector>
using namespace std;
FILE *f=fopen("radixsort.in","r");
FILE *g=fopen("radixsort.out","w");
int n,a,b,c,v[10000001],put=1,maxim,nr;
bool ok;

vector <int> q[10];

int main()
{int i,j;
fscanf(f,"%d %d %d %d",&n,&a,&b,&c);
v[1]=b;
for (i=2;i<=n;i++) {v[i]=(a*(v[i-1])+b)%c;
                    maxim=max(maxim,v[i]);}
while (1LL*put<=maxim)
{

for (i=1;i<=n;i++) {j=(v[i]/put)%10;
                    q[j].push_back(v[i]);
                    }
nr=0;
for (i=0;i<=9;i++) {for (j=0;j<q[i].size();j++) v[++nr]=q[i][j];
                    q[i].clear();
                    }
put=put*10;}
for (i=1;i<=n;i+=10) fprintf(g,"%d ",v[i]);
return 0;
}