Cod sursa(job #2057740)

Utilizator neth------ neth Data 4 noiembrie 2017 18:08:31
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
#include <string.h>
#pragma GCC optimize "O3"

/*
#define BUFMAX 11000000
int bufcnt = BUFMAX - 1; char buf[BUFMAX];
inline void write(int x) {
  buf[bufcnt--] = ' ';
  do buf[bufcnt--] = x % 10 + '0', x /= 10; while (x);
}
inline void flush() { fo.write(buf + bufcnt + 1, BUFMAX - bufcnt - 2); }
*/

const int BITS = 8;
const int MASK = (1 << BITS) - 1;
#define MAX 10000000
int v[MAX];

int main() {
  freopen("radixsort.in", "r", stdin);
  freopen("radixsort.out", "w", stdout);
  int n, b, c; unsigned long long a; scanf("%d%lld%d%d", &n, &a, &b, &c);
  v[0] = b; a %= c, b %= c;
  for (int i = 1; i < n; i++) {
    unsigned long long t = a * v[i - 1] + b;
    int thi = t >> 32, tlo = t; int aux;
    asm("divl %4" : "=a"(aux), "=d"(v[i]) : "0"(tlo), "1"(thi), "r"(c));
  }
  //for (int i = n - 1 - (n - 1) % 10; i >= 0; i -= 10) write(v[i]); flush();
  for (int i = 0; i < n; i += 10) printf("%d ", v[i]);
}