1877 - K Max: Difference between revisions
Andrada378 (talk | contribs) Pagină nouă: Cerinta Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat. Date de intrare Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k. Date de iesire Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată. Rezolvare def maxima_suma(n, si... |
Andrada378 (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== Cerința == | |||
Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat. | Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat. | ||
Date de intrare | == Date de intrare == | ||
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k. | Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k. | ||
Date de iesire | == Date de iesire == | ||
Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată. | Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată. | ||
== Restricții și precizări == | |||
* 1 ≤ n ≤ 1000 | |||
* elementele șirului vor fi cuprinse între -1.000.000 și 1.000.000 | |||
=== Exemplu: === | |||
'''Intrare''' | |||
5 | |||
5 -2 -3 4 1 | |||
1 | |||
'''Ieșire''' | |||
11 | |||
== Rezolvare == | |||
<syntaxhighlight lang="python"> | |||
def calculeaza_max_sum(n, v, k): | |||
v.sort() | |||
for i in range(k): | |||
v[i] *= -1 | |||
s = sum(v) | |||
return s | |||
if __name__ == "__main__": | |||
while True: | |||
n = int(input("Introduceți valoarea lui n (1 ≤ n ≤ 1000): ")) | |||
if 1 <= n <= 1000: | |||
break | |||
else: | |||
print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.") | |||
while True: | |||
v = list(map(int, input("Introduceți elementele șirului separate prin spațiu: ").split())) | |||
elemente_valide = all(-1000000 <= elem <= 1000000 for elem in v) | |||
if elemente_valide: | |||
break | |||
else: | |||
print("Intrare invalidă. Asigurați-vă că toate elementele sunt în intervalul specificat.") | |||
while True: | |||
k = int(input("Introduceți valoarea lui k: ")) | |||
if 1 <= k <= n: | |||
break | |||
else: | |||
print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.") | |||
rezultat = calculeaza_max_sum(n, v, k) | |||
print(rezultat) | |||
</syntaxhighlight> |
Latest revision as of 15:44, 4 January 2024
Cerința[edit | edit source]
Se dă un șir cu n elemente, numere întregi, și un număr natural k ≤ n. Calculați cea mai mare sumă care poate fi obținută schimbând semnul a exact k elemente aflate pe poziții distincte din șirul dat.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului, apoi numărul k.
Date de iesire[edit | edit source]
Programul va afișa pe ecran numărul S, reprezentând suma maximă determinată.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- elementele șirului vor fi cuprinse între -1.000.000 și 1.000.000
Exemplu:[edit | edit source]
Intrare
5
5 -2 -3 4 1
1
Ieșire
11
Rezolvare[edit | edit source]
<syntaxhighlight lang="python"> def calculeaza_max_sum(n, v, k):
v.sort()
for i in range(k): v[i] *= -1
s = sum(v) return s
if __name__ == "__main__":
while True: n = int(input("Introduceți valoarea lui n (1 ≤ n ≤ 1000): ")) if 1 <= n <= 1000: break else: print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.")
while True: v = list(map(int, input("Introduceți elementele șirului separate prin spațiu: ").split())) elemente_valide = all(-1000000 <= elem <= 1000000 for elem in v) if elemente_valide: break else: print("Intrare invalidă. Asigurați-vă că toate elementele sunt în intervalul specificat.")
while True: k = int(input("Introduceți valoarea lui k: ")) if 1 <= k <= n: break else: print("Intrare invalidă. Vă rugăm să introduceți o valoare în intervalul specificat.")
rezultat = calculeaza_max_sum(n, v, k) print(rezultat)
</syntaxhighlight>