Pagini recente » Cod sursa (job #3269659) | Cod sursa (job #2760312) | Cod sursa (job #420324) | Cod sursa (job #3282919) | Cod sursa (job #3189169)
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()