1877 - K Max
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.
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ă.
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>