0260 - Lungime
Cerința
Se dă un sir cu n elemente, numere naturale nenule cu cel mult 2 cifre fiecare, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.
Date de intrare
Fişierul de intrare lungimein.txt conţine pe prima linie numărul n; urmează n numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.
Date de ieșire
Fişierul de ieşire lungimeout.txt va conţine pe prima linie numărul L, reprezentând lungimea maximă determinată.
Restricții și precizări
- 1 ⩽ n ⩽ 100.000
Exemplul 1
- Intrare
- lungimein.txt
- 12
- 2 13 10 5 10 12 6 7 5 10 12 8
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- lungimeout.txt
- 8
Explicație
Cea mai lungă secvenţă de elemente în care primul şi ultimul element sunt egale este 10 5 10 12 6 7 5 10, şi are lungimea 8.
Exemplul 2
- Intrare
- lungimein.txt
- 100001
- 2 13 10 5 10 12 6 7 5 10 12 8
- Ieșire
- Datele de intrare NU corespund restricțiilor impuse
Rezolvare
<syntaxhighlight lang="python" line>
- 0260 - Lungime
def validare_date_intrare(n, sir):
if not 1 <= n <= 100000: return False if len(sir) != n: return False for numar in sir: if not 1 <= numar <= 99: return False return True
def lungime_maxima_secventa(n, sir):
if validare_date_intrare(n, sir): print("Datele de intrare corespund restricțiilor impuse") lungime_maxima = 0 for i in range(n): for j in range(i, n): if sir[i] == sir[j]: lungime_curenta = j - i + 1 if lungime_curenta > lungime_maxima: lungime_maxima = lungime_curenta with open("lungimeout.txt", "w") as out_file: out_file.write(str(lungime_maxima) + "\n") else: print("Datele de intrare NU corespund restricțiilor impuse") exit(0)
if __name__ == "__main__":
with open("lungimein.txt", "r") as f: n = int(f.readline()) sir = list(map(int, f.readline().split())) lungime_maxima_secventa(n, sir)
</syntaxhighlight>