Cod sursa(job #2345122)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 15 februarie 2019 21:55:46
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#define inf 2147483647
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout("radixsort.out");
int n,a,b,c,*v[10000002],i,k;
void interclasare(int* &a, int* &b){
    int *c=new int[a[0]+b[0]+1];
    c[0]=a[0]+b[0];
    int i,j,k;
    for(i=1,j=1,k=1;i<=a[0] || j<=b[0]; ){
        if((j>b[0]) || (i<=a[0] && a[i]<b[j])){
            c[k]=a[i];i++;k++;
        }
        else{
            c[k]=b[j];j++;k++;
        }
    }
    delete[] a; delete[] b;
    a=c;
}

int main(){
    fin>>n>>a>>b>>c;
    v[1]=new int[2];
    v[1][0]=1; v[1][1]=b;
    for(i=2;i<=n;i++){
        v[i]=new int[2];
        v[i][1]= (a * v[i-1][1] + b) % c;
        v[i][0]=1;
    }
    while(n>1){
        k=1;
        while(k<n){
            interclasare(v[k],v[n]);
            k++;n--;
        }
    }
    for(i=1;i<=v[1][0];i+=10){
        fout<<v[1][i]<<" ";
    }
    fout.close();
    return 0;
}