Cod sursa(job #2560182)

Utilizator DiagrDiana Grigore Diagr Data 27 februarie 2020 20:10:41
Problema Radix Sort Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.94 kb
import itertools


f = open("radixsort.in")
g = open("radixsort.out", 'w')
def radix_sort(l):
    maximum = max(l)
    biti = 0
    while (maximum):
        biti += 1
        maximum=maximum>> 1
    if biti % 8 == 0:
        bit_maxim = biti // 8
    else:
        bit_maxim = (biti // 8) + 1
    x = l
    for i in range(bit_maxim):
        x = radixsort_offset(x, i)
    return x

def radixsort_offset(x, y):

    bit = (255 << y*8)
    buckets = [[] for a in range(256)]
    for num in x:
        bit_offset = (num & bit) >> y*8
        buckets[bit_offset].append(num)

    return list(itertools.chain.from_iterable(buckets))

l=f.readline()
l=l.split()
N=int(l[0])
A=int(l[1])
B=int(l[2])
C=int(l[3])
a=[]
for i in range(1, N+1):
    if i == 1:
        a.append(B)
    else:
        a.append((A*a[len(a)-1]+B)%C)
rez=radix_sort(a)
for x in range(0, len(rez), 10):
    g.write(str(rez[x])+' ')

f.close()
g.close()