fbpx

Problema #1877 – kMax – Rezolvari PBInfo

de Mihai-Alexandru

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 ieșire

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
#include <bits/stdc++.h>

using namespace std;
int main()
{
    int n , k , a[1002] , s = 0;
    cin >> n;
    for(int i = 0 ; i < n ; ++i) cin >> a[i];
    cin >> k;
    sort(a , a + n);
    for(int i = 0 ; i < n ; ++i)
    {
        if(i < k) a[i] = a[i] * -1;
        s += a[i];
    }
    cout << s;
    return 0;
}
Comentarii

S-ar putea sa iti placa