Cei soldați ai unei unități militare au un moment de relaxare și sunt răspândiți pe platou în poziții cunoscute. Evident, ei nu stau aliniați, în poziție de drepți. Platoul poate fi reprezentat printr-un tablou bidimensional cu linii (numerotate de la la ) și coloane (numerotate de la la ), o poziție în tablou fiind identificată prin indicele liniei și respectiv al coloanei. Când se anunță sosirea comandantului unității militare, cei soldați trebuie să se alinieze. Alinierea presupune aşezarea celor soldaţii pe o aceeași linie , pe coloane consecutive. Ca să nu se creeze haos, fiecare dintre ei se va deplasa numai pe orizontală și verticală. Dacă soldatul () se află iniţial în poziţia iar la aliniere ajunge în poziţia , distanţa pe care el o parcurge va fi .
Cerință
Scrieţi un program care să rezolve următoarele două cerințe:
- determină o linie , astfel încât pentru alinierea soldaților pe pozițiile de pe linia , suma distanţelor parcurse de aceştia să fie minimă;
- determină o linie și o coloană , astfel încât pentru alinierea soldaților pe linia pe coloanele , suma distanţelor parcurse de aceştia să fie minimă.
Date de intrare
Fişierul de intrare soldati.in
conține pe prima linie 4 valori naturale , , , , separate prin câte un spațiu, reprezentând cerința care trebuie să fie rezolvată, numărul de linii, numărul de coloane, respectiv numărul de soldați. Următoarele linii conțin pozițiile celor soldați, câte un soldat pe o linie, pozițiile fiind descrise prin două numere naturale , separate printr-un spațiu, reprezentând linia, respectiv coloana.
Date de ieșire
Fişierul de ieşire soldati.out
va conține pe prima linie un număr natural reprezentând distanța totală minimă parcursă pentru ca soldații să se alinieze conform cerinței din fișierul de intrare. Dacă pe cea de a doua linie va fi scris un număr natural reprezentând linia pe care se face alinierea. Dacă , pe cea de-a doua linie se vor scrie două numere naturale separate prin spaţiu , , reprezentând linia pe care se va face alinierea, respectiv coloana de la care soldații încep să se alinieze. În cazul în care există mai multe linii pe care soldații se pot alinia parcurgând distanţă totală minimă, se va afișa cea mai mică dintre ele. Pentru , în cazul în care există mai multe coloane începând cu care soldații se pot alinia pe linia parcurgând distanţă totală minimă, se va afișa cea mai mică dintre ele.
Restricții și precizări
- Pozițiile inițiale ale soldaților sunt distincte.
# | Punctaj | Restricții |
---|---|---|
1 | 5 | Soldații se află inițial pe aceeași linie. |
2 | 14 | |
3 | 12 | , |
4 | 33 | |
5 | 12 | , |
6 | 24 |
Exemplul 1
soldati.in
1 16 17 11
2 3
6 6
6 8
6 9
6 10
6 11
9 6
11 9
13 8
13 6
15 9
soldati.out
54
6
Explicație
Mai jos este reprezentat platoul și modul în care soldații se rearanjează
Exemplul 2
soldati.in
2 16 17 11
2 3
6 6
6 8
6 9
6 10
6 11
9 6
11 9
13 8
13 6
15 9
soldati.out
46
6 3
Explicație
- pași pe coloana
- pași pe linia
- pas pe linia
- pași (stă pe loc)
- pași pe linia
- pași pe linia
- pași pe coloana și pas pe linia
- pași pe coloana și pas pe linia
- pași pe coloana
- pași pe coloana
- pași pe coloana și pași pe linia