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
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>