1877 - K Max
De la Universitas MediaWiki
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
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)