Cod sursa(job #2308543)

Utilizator AcuasPopescu Nicolae-Aurelian Acuas Data 27 decembrie 2018 12:39:57
Problema Subsir crescator maximal Scor 30
Compilator py Status done
Runda Arhiva educationala Marime 0.94 kb
import sys


def read():
    with open('scmax.in', 'r') as fin:
        n = int(fin.readline())
        v = []
        line = fin.read()
        for x in line.split(" "):
            if x.isdigit():
                v.append(int(x))
    return n, v


def main():
    n, v = read()
    s = [1] * n
    index = [0] * n
    for i in range(0, n):
        index[i] = i
    for i in range(n - 2, -1, -1):
        for j in range(i + 1, n):
            if v[i] < v[j] and s[i] < s[j] + 1:
                s[i] = s[j] + 1
                index[i] = j

    index_maxim = 0
    max_s = 0
    for i in range(0, n):
        if max_s < s[i]:
            max_s = s[i]
            index_maxim = i

    i = index_maxim
    with open('scmax.out', 'w') as fout:
        fout.write(str(max_s) + '\n')
        while index[i] != i:
            fout.write(str(v[i]) + " ")
            i = index[i]
        fout.write(str(v[i]) + " ")
    sys.exit(0)


if __name__ == '__main__':
    main()