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) No edit summary |
||
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 calculate_max_sum(n, v, k): | |||
v.sort() | |||
for i in range(k): | |||
v[i] *= -1 | |||
s = sum(v) | |||
return s | |||
if __name__ == "__main__": | |||
n = int(input()) | |||
v = list(map(int, input().split())) | |||
k = int(input()) | |||
result = calculate_max_sum(n, v, k) | |||
print(result) | |||
</syntaxhighlight> |
Revision as of 13:08, 2 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 calculate_max_sum(n, v, k):
v.sort()
for i in range(k): v[i] *= -1
s = sum(v) return s
if __name__ == "__main__":
n = int(input()) v = list(map(int, input().split())) k = int(input())
result = calculate_max_sum(n, v, k) print(result)
</syntaxhighlight>