Într-o dimineață fatidică de iarnă, Cătălin a inventat un algoritm de sortare cu complexitatea , pe care l-a denumit "Sortare binară". Deși acest algoritm sfidează toate legile naturii, tot nu poate rezolva această problemă.
Cerință
Se dă un șir . Un șir este o rearanjare a lui dacă conține aceleași elemente ca , eventual în altă ordine.
De exemplu, rearanjări ale lui sunt , sau , dar nu și sau .
Valoarea unei rearanjări este egală cu , unde reprezintă modulul sau valoarea absolută a lui .
De exemplu, valoarea lui este egală cu .
În funcție de numărul cerinței , va trebui să aflați:
- Dacă , care este valoarea minimă posibilă a unei rearanjări a șirului ?
- Dacă , care este valoarea maximă posibilă a unei rearanjări a șirului ?
Date de intrare
Pe prima linie a fișierului de intrare binsort.in
se vor afla două numere și - numărul cerinței, respectiv lungimea șirului .
Pe a doua linie se vor afla numere naturale - elementele șirului .
Date de ieșire
- Dacă , atunci fișierul de ieșire
binsort.out
va conține valoarea minimă posibilă a unei rearanjări a șirului , precum și orice rearanjare cu valoarea minimă. - Dacă , atunci fișierul de ieșire
binsort.out
va conține valoarea maximă posibilă a unei rearanjări a șirului , precum și orice rearanjare cu valoarea maximă.
Restricții și precizări
- ;
- ;
- Pentru de puncte, și ;
- Pentru încă de puncte, ;
- Pentru de puncte, și ;
- Pentru încă de puncte, .
Exemplul 1
binsort.in
1 5
2 3 1 2 1
binsort.out
4
3 2 2 1 1
Explicație
Valoarea rearanjării este egală cu , care este minimul posibil.
Exemplul 2
binsort.in
2 5
2 3 1 2 1
binsort.out
6
1 3 1 2 2
Explicație
Valoarea rearanjării este egală cu , care este maximul posibil.