Cod sursa(job #2657177)

Utilizator contdeteste420Cont De Teste contdeteste420 Data 9 octombrie 2020 22:29:36
Problema Sortare prin comparare Scor 40
Compilator py Status done
Runda Arhiva educationala Marime 0.93 kb
fin=open("algsort.in","r")
fout=open("algsort.out","w")


heap=[0]
sz=0

def add(x):
    heap.append(x)
    node=sz
    while node and heap[node]<heap[node//2]:
        heap[node],heap[node//2]=heap[node//2],heap[node]
        node//=2


def cut():
    heap[1],heap[sz]=heap[sz],heap[1]
    node=1
    while 1:
        son1=2*node
        son2=2*node+1
        if (son1<sz and heap[node]>heap[son1]) or (son2<sz and heap[node]>heap[son2]):
            best=son1
            if son2<sz and heap[son2]<heap[son1]:
                best=son2
            heap[node],heap[best]=heap[best],heap[node]
            node,best=best,node

        else:
            break







l=fin.read().split()

n=int(l[0])

v=[0]

for i in range(1,n+1):
    v.append(int(l[i]))

#print(v)


for i in range(1,n+1):
    sz+=1
    add(v[i])


for i in range(0,n):
    print(heap[1],end=' ',file=fout)
    cut()
    sz-=1