3959 - MaxSecvK: Difference between revisions
Pagină nouă: ==Cerința== Se consideră un șir '''A''' de '''n''' numere întregi. Pentru fiecare subsecvență de lungimea '''k''' să se afișeze valoarea maximă. ==Date de intrare== Fișierul de intrare '''maxsecvk.in''' conține pe prima linie două numere naturale nenule '''n''' și '''k''', iar pe a doua linie '''n''' numere întregi separate prin spații. ==Date de ieșire== Fișierul de ieșire '''maxsecvk.out''' va conține '''n–k+1''' numere întregi ce reprezintă valo... |
No edit summary |
||
Line 5: | Line 5: | ||
==Date de intrare== | ==Date de intrare== | ||
Fișierul de intrare ''' | Fișierul de intrare '''maxsecvkin.txt''' conține pe prima linie două numere naturale nenule '''n''' și '''k''', iar pe a doua linie '''n''' numere întregi separate prin spații. | ||
==Date de ieșire== | ==Date de ieșire== | ||
Fișierul de ieșire ''' | Fișierul de ieșire '''maxsecvkout.txt''' va conține '''n–k+1''' numere întregi ce reprezintă valoarea maximă a tuturor secvențelor de lungime '''k'''. | ||
==Restricții și precizări== | ==Restricții și precizări== | ||
Line 18: | Line 18: | ||
*prin secvență înțelegem elemente aflate pe poziții consecutive în șir | *prin secvență înțelegem elemente aflate pe poziții consecutive în șir | ||
== | ==Exemplul 1:== | ||
''' | '''maxsecvkin.txt''' | ||
9 3 | |||
1 2 4 1 3 6 3 2 5 | |||
''' | '''maxsecvkout.txt''' | ||
Datele de intrare corespund restrictiilor impuse | |||
4 4 4 6 6 6 5 | |||
==Exemplul 2:== | |||
'''maxsecvkin.txt''' | |||
maxsecvk | |||
'''maxsecvkout.txt''' | |||
Datele de intrare nu corespund restrictiilor impuse | |||
==Explicație== | ==Explicație== | ||
Line 44: | Line 55: | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare(nr_n, nr_k, numere): # functia de validare a datelor de intrare | |||
def | if nr_n < 1 or nr_n > 100000 or nr_k < 1 or nr_k > nr_n: | ||
raise ValueError | |||
for num in numere: | |||
if num < -1000000000 or num > 1000000000: | |||
n, | raise ValueError | ||
# | file_out.write("Datele de intrare corespund restrictiilor impuse\n") | ||
def max_subsequence(numere, nr_k): # functia de rezolvare | |||
max_values = [max(numere[i:i + nr_k]) for i in range(len(numere) - nr_k + 1)] | |||
for value in max_values: | |||
file_out.write(str(value) + ' ') | |||
if __name__ == '__main__': | |||
file_in = open('maxsecvkin.txt', 'r') # declararea fisierelor | |||
file_out = open('maxsecvkout.txt', 'w') # fisierul out trebuie declarat cu optiunea "w" (write) | |||
try: | |||
n, k = map(int, file_in.readline().split()) | |||
numbers = list(map(int, file_in.readline().split())) | |||
validare(n, k, numbers) # apelul functiei de validare | |||
max_subsequence(numbers, k) # apelul functiei de rezolvare | |||
except ValueError: | |||
file_out.write("Datele de intrare nu corespund restrictiilor impuse") | |||
except IndexError: | |||
file_out.write("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:53, 12 December 2023
Cerința[edit | edit source]
Se consideră un șir A de n numere întregi. Pentru fiecare subsecvență de lungimea k să se afișeze valoarea maximă.
Date de intrare[edit | edit source]
Fișierul de intrare maxsecvkin.txt conține pe prima linie două numere naturale nenule n și k, iar pe a doua linie n numere întregi separate prin spații.
Date de ieșire[edit | edit source]
Fișierul de ieșire maxsecvkout.txt va conține n–k+1 numere întregi ce reprezintă valoarea maximă a tuturor secvențelor de lungime k.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 100.000
- 1 ≤ k ≤ n
- -1.000.000.000 ≤ Ai ≤ -1.000.000.000
- prin secvență înțelegem elemente aflate pe poziții consecutive în șir
Exemplul 1:[edit | edit source]
maxsecvkin.txt
9 3 1 2 4 1 3 6 3 2 5
maxsecvkout.txt
Datele de intrare corespund restrictiilor impuse 4 4 4 6 6 6 5
Exemplul 2:[edit | edit source]
maxsecvkin.txt
maxsecvk
maxsecvkout.txt
Datele de intrare nu corespund restrictiilor impuse
Explicație[edit | edit source]
Se vor afișa 7 numere. Maximul secvenței 1 2 4 este 4 Maximul secvenței 2 4 1 este 4 Maximul secvenței 4 1 3 este 4 Maximul secvenței 1 3 6 este 6 Maximul secvenței 3 6 3 este 6 Maximul secvenței 6 3 2 este 6 Maximul secvenței 3 2 5 este 5
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1">
def validare(nr_n, nr_k, numere): # functia de validare a datelor de intrare
if nr_n < 1 or nr_n > 100000 or nr_k < 1 or nr_k > nr_n: raise ValueError for num in numere: if num < -1000000000 or num > 1000000000: raise ValueError file_out.write("Datele de intrare corespund restrictiilor impuse\n")
def max_subsequence(numere, nr_k): # functia de rezolvare
max_values = [max(numere[i:i + nr_k]) for i in range(len(numere) - nr_k + 1)] for value in max_values: file_out.write(str(value) + ' ')
if __name__ == '__main__':
file_in = open('maxsecvkin.txt', 'r') # declararea fisierelor file_out = open('maxsecvkout.txt', 'w') # fisierul out trebuie declarat cu optiunea "w" (write)
try: n, k = map(int, file_in.readline().split()) numbers = list(map(int, file_in.readline().split()))
validare(n, k, numbers) # apelul functiei de validare max_subsequence(numbers, k) # apelul functiei de rezolvare
except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse") except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>