Cod sursa(job #2335773)

Utilizator ajeccAjechiloae Eugen ajecc Data 4 februarie 2019 15:01:40
Problema Subsir crescator maximal Scor 100
Compilator py Status done
Runda Arhiva educationala Marime 0.66 kb
import bisect

in_file = open("scmax.in", "r")
out_file = open("scmax.out", "w")

n = int(in_file.readline())
v = [int(x) for x in in_file.readline().split()]

lis = []
contribution = []
for i in v:
    pos_in_lis = bisect.bisect_left(lis, i)
    if pos_in_lis >= len(lis):
        lis.append(i)
    else:
        lis[pos_in_lis] = i
    contribution.append(pos_in_lis)

ans = len(lis)
print(ans, end='\n', file=out_file)

index = n - 1
ans_lis = []
while index >= 0:
    if contribution[index] == ans - 1:
        ans_lis.append(v[index])
        ans -= 1
    index -= 1

for i in reversed(ans_lis):
    print(i, end=' ', file=out_file)

in_file.close()
out_file.close()