cmin

Time limit: 0.03s Memory limit: 64MB Input: cmin.in Output: cmin.out

Jocul cmin constă în a găsi o strategie pentru a deplasa un anumit număr de jetoane identice pe o tablă pătratică, în scopul obţinerii unei configuraţii finale, cu un cost minim.

Tabla are n x n celule, aflate la intersecţia a nn rânduri numerotate de la 11 la nn de sus în jos şi a nn coloane, numerotate de la 11 la nn de la stânga spre dreapta. Numărul nn este întotdeauna par.

La momentul iniţial al jocului, pe tablă se găsesc kk jetoane în poziţii cunoscute. Fiecare jeton poate fi deplasat doar pe verticală, din celula iniţială într-o celulă finală neocupată de un alt jeton. Un jeton poate fi deplasat chiar dacă între poziţia sa iniţială şi cea finală există celule ocupate de către alte jetoane.

Costul deplasării unui jeton pe verticală, din celula curentă într-o celulă adiacentă este 11 (o unitate). Un jeton poate fi mutat de mai multe ori. Jucătorul decide ordinea deplasării jetoanelor. Acesta poate să mute 0,10, 1 sau chiar toate jetoanele pentru a termina jocul cu un cost total minim. Costul total este suma costurilor deplasării tuturor jetoanelor.

Jocul cmin se termină când diferenţa în valoare absolută dintre numărul de jetoane care se află pe primele n/2n/2 rânduri (cele de sus) şi numărul de jetoane care se găsesc pe ultimele n/2n/2 rânduri (cele de jos), este minimă.

Cerinţă

Cunoscând numărul nn de rânduri şi de coloane ale tablei şi poziţiile iniţiale ale jetoanelor, determinaţi costul total minim necesar pentru deplasarea acestora, astfel încât diferenţa în valoare absolută dintre numărul jetoanelor care se vor găsi în final pe primele n/2n/2 rânduri şi numărul jetoanelor care se vor găsi pe ultimele n/2n/2 rânduri, să fie minimă.

Date de intrare

Fişierul de intrare cmin.in conţine pe prima linie un număr natural nn, par, cu semnificaţia descrisă
anterior. Următoarele nn linii descriu configuraţia iniţială a tablei. Fiecare linie conţine câte nn valori 11 sau 00, separate prin câte un spaţiu. Valoarea 11 reprezintă o celulă ocupată cu un jeton, iar 00 o celulă liberă.

Date de ieșire

Pe prima linie a fişierului cmin.out se va scrie un singur număr natural cc, reprezentând costul minim cerut, cu respectarea regulilor jocului cmin.

Restricții și precizări

  • 2n1002 \leq n \leq 100 (n – număr par);
  • 1kn×n1 \leq k \leq n \times n.

Exemplul 1

cmin.in

2
0 0
1 0

cmin.out

0

Explicație

Nu este necesară mutarea nici unui jeton.

Exemplul 2

cmin.in

4
1 1 1 1
1 1 0 0
1 0 0 0
0 0 0 0

cmin.out

3

Explicație

O variantă posibilă: Se mută jetonul din celula (2,1)(2, 1) în celula (4,1)(4,1). Costul este 22. Apoi se mută jetonul din celula (2,2)(2, 2) în celula (3,2)(3, 2). Costul este 11. Suma costurilor este 33. Altă variantă: se mută jetoanele din celulele (3,1)(3,1), (2,1)(2,1), şi (2,2)(2,2) cu câte o poziţie. Se ajunge în aceeaşi stare finală ca în prima variantă. Altă variantă: din celula (2,2)(2,2) în (3,2)(3,2) şi din celula (1,3)(1,3) în (3,3)(3,3)

Log in or sign up to be able to send submissions!