"Vrei să vezi o țeapă?" *iese din apel*
Cerință
Se dă și un șir de numere întregi. O operație de flip pe un număr din constă în schimbarea semnului numărului ( devine , iar devine ). Să se afle suma maximă a unei subsecvențe contigue din care nu conține numere negative, după ce se fac exact operații de flip, pe care voi le veți alege.
Date de intrare
Pe prima linie se găsesc două numere naturale, și . Pe următoarea linie se găsesc numere întregi, elementele șirului .
Dacă folosiți citire cu std::cin
, vă recomandăm să adăugați aceste linii la începutul programului:
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
Date de ieșire
Pe prima linie se va găsi un singur număr natural, reprezentând răspunsul.
Restricții și precizări
- .
- , pentru de la la .
- Se pot face mai multe operații flip pe același număr.
- Se garantează că se pot face operații de flip astfel încat să existe cel puțin un număr pozitiv în .
# | Punctaj | Restricții |
---|---|---|
0 | 0 | Exemplul |
1 | 7 | |
2 | 8 | |
3 | 5 | |
4 | 13 | |
5 | 9 | Toate numerele sunt mai mari sau egale cu |
6 | 22 | Există exact un număr mai mic strict decât |
7 | 36 | Fără alte restricții |
Exemplul 1
stdin
7 2
4 -2 -3 1 10 -1 5
stdout
20
Explicație
Facem flip la elementele de pe pozițiile și . Șirul devine . Suma maximă a unei secvențe care conține doar numere pozitive este .
Exemplul 2
stdin
5 2
2 3 -1 4 6
stdout
14
Explicație
Facem flip la elementele de pe pozițiile și . Șirul devine . Suma maximă a unei secvențe care conține doar numere pozitive este .