Pagini recente » Cod sursa (job #379443) | Cod sursa (job #2944151) | Cod sursa (job #1897134) | Cod sursa (job #2899523) | Cod sursa (job #2335773)
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()