Cod sursa(job #2606313)

Utilizator lev.tempfliTempfli Levente lev.tempfli Data 27 aprilie 2020 15:16:13
Problema Radix Sort Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.05 kb
def input_gen_int(fname):
    with open(fname, 'rt') as fin:
        for line in fin:
            for val in line.split():
                yield int(val)


def radix_sort(v, max_byte_len):
    full_byte = 0xFF
    helper = [0 for _ in range(len(v))]
    counter = [0 for _ in range(256)]
    for i in range(max_byte_len):
        counter = [0] * 256
        for j in range(len(v)):
            counter[v[j] >> (i * 8) & full_byte] += 1
        for j in range(1, 256):
            counter[j] += counter[j - 1]
        for j in range(len(v) - 1, -1, -1):
            counter[v[j] >> (i * 8) & full_byte] -= 1;
            helper[counter[v[j] >> (i * 8) & full_byte]] = v[j]
        v, helper = helper, v


if __name__ == "__main__":
    ig = input_gen_int("radixsort.in")
    n, a, b, c, = next(ig), next(ig), next(ig), next(ig)
    v = []
    v.append(b % c);
    for i in range(1, n):
        v.append((a * v[i - 1] % c + b) % c)
    radix_sort(v, 8);
    with open("radixsort.out", "wt") as fout:
        for i in range(0,len(v),10):
            fout.write('{} '.format(v[i]))