0260 - Lungime
Cerința[edit | edit source]
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[edit | edit source]
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[edit | edit source]
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[edit | edit source]
- 1 ⩽ n ⩽ 100.000
Exemplul 1[edit | edit source]
- 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[edit | edit source]
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[edit | edit source]
- 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[edit | edit source]
<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>