Cod sursa(job #2677550)

Utilizator Antonia_onisoruantonia onisoru Antonia_onisoru Data 26 noiembrie 2020 19:51:45
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("radixsort.in");
ofstream out("radixsort.out");

const int MAXN = 10000000;

int v[MAXN];

void radix_sort(int v[], int left, int right, int bit_no){
  if( left >= right || bit_no == -1 )
    return;
  int i, j, t;
  for( i = left, j = left; i <= right; i++){
    if(( v[i] & ( 1 << bit_no ) ) == 0 ){
      t = v[i];
      v[i] = v[j];
      v[j] = t;
      j++;
    }
  }
  radix_sort(v, left, j - 1, bit_no - 1);
  radix_sort(v, j, right, bit_no - 1);
}

int main()
{
    int n, a, b, c, i, nr, prev, k;
    in>>n>>a>>b>>c;
    prev = b;
    v[0] = b;
    k = 0;
    for( i = 1; i < n; i++ )
      v[i] = ( a * v[i - 1] + b ) % c;
    //out<<'\n';
    radix_sort(v, 0, n - 1, 30);
    for( i = 0; i < n;  i++ ){
      if( i % 10 == 0 )
        out<<v[i]<<" ";
    }
    return 0;
}