Cod sursa(job #3189169)

Utilizator Zed1YasuoAlex Birsan Zed1Yasuo Data 4 ianuarie 2024 16:33:18
Problema Subsir crescator maximal Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.94 kb

def binar(val,k):
    st=0
    dr=k
    while st<=dr:
        mj=int((st+dr)/2)
        if a[last[mj]]<val:
            st=mj+1
        else:
            dr=mj-1
    return st-1
def afisare(val):
    if val!=0:
        afisare(p[val])
        g.write(str(a[val]))
        g.write(' ')
def main():
    nmb=f.readline()
    n=int(nmb)
    linie=f.readline()
    numere=linie.split()
    for i in range(n):
        a[i+1]=int(numere[i])
    n+=1

    best[1]=last[1]=1
    last[0]=0
    k=1
    for i in range(2,n):
        poz=binar(a[i],k)
        p[i]=last[poz]
        best[i]=poz+1
        last[poz+1]=i
        if k<poz+1:
            k+=1
    mx=0
    poz=0
    for i in range(n):
        if mx<best[i]:
            mx=best[i]
            poz=i
    g.write(str(mx))
    g.write('\n')
    afisare(poz)

a=[0]*1003
last=[0]*1003
best=[0]*1003
p=[0]*1003

f=open("scmax.in", "r")
g=open("scmax.out", "w")
main()