Cod sursa(job #1111529)

Utilizator addy01adrian dumitrache addy01 Data 18 februarie 2014 22:14:33
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define maxn 10000010
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");


int v[maxn],b[maxn],maxim;
void radixsort(int a[],int n)
{
    int exp=1,i;
    while(maxim/exp>0)
    {
        int buket[10]={ 0 };
        memset(buket,0,sizeof(buket));
        for(i=0;i<n;i++)
            buket[ (a[i]/exp) % 10 ]++;

        for(i=1;i<=9;i++)
            buket[i]+=buket[i-1];

        for(i=n-1;i>=0;i--)
            b[ --buket[ (a[i]/exp) % 10 ] ] = a[i];

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

        exp*=10;
    }
}
int main()
{

    int i,n,a,b,c;
       in>>n>>a>>b>>c;
    v[0]=b;
    maxim=v[0];
    for(i=1;i<n;i++)
        {v[i]=(a*v[i-1]+b)%c;
            if(v[i]>maxim)
                maxim=v[i];
        }
radixsort(v,n);

for(i=0;i<n;i+=10)
    out<<v[i]<<" ";



    return 0;
}