Cod sursa(job #2268145)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 24 octombrie 2018 15:25:17
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#define MAX 10000010

using namespace std;
typedef long long ll;

ll n,a,b,c,aa;
int r[2][MAX],v[MAX];
void sorteaza(int di){
  int sz[2]={0,0},bt,szf=0;
  for(int i=1;i<=n;i++){
    bt=((v[i]|di)==v[i]);
    r[bt][++sz[bt]]=v[i];
  }
  for(int ra=0;ra<=1;ra++)
    for(int i=1;i<=sz[ra];i++)
      v[++szf]=r[ra][i];
}

int main()
{
    ifstream f ("radixsort.in");
    ofstream g ("radixsort.out");
    f>>n>>a>>b>>c;
    v[1]=b;
    for(int i=2;i<=n;i++) v[i]=(a*v[i-1]+b)%c;
    for(int i=0;i<=31;i++) sorteaza(1<<i);
    for(int i=1;i<=n;i+=10) g<<v[i]<<" ";
    f.close ();
    g.close ();
    return 0;
}