Drag

Time limit: 0.2s Memory limit: 64MB Input: drag.in Output: drag.out

Cerință

Se dǎ o matrice cu 00 și 11. Considerăm că avem 00 în celulele libere și 11 în celulele ocupate. Dorim să completăm cu 11 cât mai multe linii consecutive din partea de jos a matricei (adică să fie complete linia nn, linia n1n-1, \dots). Dispunem de operația: selectăm o celulă egală cu 11 și apoi o putem trage la stânga, la dreapta sau în jos până o fixăm unde dorim. O putem trage din poziția curentă în una vecină doar dacă acea poziție este liberǎ. Practic o putem muta în alt loc mai jos (sau pe același rând) mergând prin zone libere. Mutarea la stânga sau la dreapta nu costă nimic, dar mutarea în jos are costul egal cu numărul de rânduri care se coboară.

Să se determine:

  1. Numărul maxim de linii care se pot completa jos. Atenție, ne intereseazǎ doar numǎrul de linii pline de 1, cele parțial completate sunt ignorate.
  2. Costul minim pentru a completa acest număr maxim de linii.

Date de intrare

Pe prima linie a fișierului de intrare drag.in se aflǎ un număr CC reprezentând cerința de rezolvat și un număr nn reprezentând dimensiunea matricei (care este una pătratică).
Pe fiecare din următoarele nn linii se află câte nn valori 00 sau 11 reprezentând configurația matricei date. Liniile sunt numerotate de sus în jos începând cu 1 iar coloanele sunt numerotate de la stânga la dreapta, de asemenea, începând cu 1. Numerele de pe aceeași linie sunt separate prin spațiu.

Date de ieșire

În fișierul drag.out, se va scrie astfel:

  • O valoare, reprezentând numărul maxim de rânduri care se pot completa jos, dacă avem C=1C = 1.
  • Două valori, separate prin spațiu, reprezentând respectiv: numărul maxim de rânduri care se pot completa jos și costul minim pentru a completa acest număr de rânduri, dacă avem C=2C = 2.

Restricții și precizări

  • 1n1 0001 \leq n \leq 1 \ 000;
  • 1c21 \leq c \leq 2;
  • Pentru 2626 de puncte C=1C=1;
  • Pentru 7474 de puncte C=2C=2;
  • Atenție, dacă avem C=1C = 1, în fișierul de ieșire scriem doar un număr;

Exemplul 1

drag.in

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

drag.out

2

Exemplul 2

drag.in

2 4
1 1 0 1
1 0 0 0
1 0 1 1
1 1 0 1

drag.out

2 4

Explicație

  • Valoarea 11 de pe linia a doua, o putem trage o poziție la dreapta și apoi una în jos (se completează cu 1 elementul de pe linia 33 și coloana 22). Costul până acum este 11.
  • Valoarea 11 de pe linia 33 și coloana 33 se deplasează o poziție în jos. Astfel, avem completată ultima linie. Costul total este până acum 22.
  • Valoarea 11 de pe linia 11 și coloana 44 se deplasează o poziție la stânga și apoi două în jos, ocupând locul lăsat liber prin mutarea elementului anterior, astfel completându-se și a doua linie de jos. Costul final devenind 44.

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