<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3475_-_TerenCasa_low</id>
	<title>3475 - TerenCasa low - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3475_-_TerenCasa_low"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;action=history"/>
	<updated>2026-05-01T07:45:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;diff=7902&amp;oldid=prev</id>
		<title>Ghisa Catalin at 15:38, 12 December 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;diff=7902&amp;oldid=prev"/>
		<updated>2023-12-12T15:38:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;amp;diff=7902&amp;amp;oldid=7128&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ghisa Catalin</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;diff=7128&amp;oldid=prev</id>
		<title>Ghisa Catalin: Pagină nouă: == Cerinţa == Gigel, un personaj cunoscut, vrea de data aceasta să își construiască o casă. Astfel, el cumpără un teren, reprezentat sub forma unei matrice binare cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane, dar datorită lipsei de experiență în tranzacții imobiliare este păcălit, deoarece există pe teren zone afectate în care nu se poate construi, marcate în matrice cu &#039;&#039;&#039;0&#039;&#039;&#039;. Celelalte zone în care se poate construi sunt marcate cu &#039;&#039;&#039;1&#039;&#039;&#039;.  Gigel acceptă că a...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3475_-_TerenCasa_low&amp;diff=7128&amp;oldid=prev"/>
		<updated>2023-11-04T13:35:18Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Gigel, un personaj cunoscut, vrea de data aceasta să își construiască o casă. Astfel, el cumpără un teren, reprezentat sub forma unei matrice binare cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane, dar datorită lipsei de experiență în tranzacții imobiliare este păcălit, deoarece există pe teren zone afectate în care nu se poate construi, marcate în matrice cu &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. Celelalte zone în care se poate construi sunt marcate cu &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.  Gigel acceptă că a...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Gigel, un personaj cunoscut, vrea de data aceasta să își construiască o casă. Astfel, el cumpără un teren, reprezentat sub forma unei matrice binare cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane, dar datorită lipsei de experiență în tranzacții imobiliare este păcălit, deoarece există pe teren zone afectate în care nu se poate construi, marcate în matrice cu &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. Celelalte zone în care se poate construi sunt marcate cu &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Gigel acceptă că a greșit și nu are altceva de făcut decât să își construiască casa unde este posibil. Acesta caută pe terenul achiziționat o bucată de teren pătrată de dimensiune cât mai mare, pentru care toate zonele ce o alcătuiesc să fie utilizabile(marcate cu &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; în matricea binară a reprezentării terenului), în care își va construi casa.&lt;br /&gt;
&lt;br /&gt;
Acesta nu se descurcă singur și vă roagă pe voi să îl ajutați să își rezolve această problemă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;terencasa_low.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șiruri cu câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; valori de &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; sau &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; reprezentând elementele matricei reprezentării binare a terenului.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;terencasa_low.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;L&amp;#039;&amp;#039;&amp;#039;, reprezentând dimensiunea bucății de teren pe care își va construi Gigel casa, iar pe a &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;-a linie &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin câte un spațiu reprezentând coordonatele colțului stânga sus, respectiv dreapta jos a submatricei care corespunde bucății de teren.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; n , m &amp;amp;les; 1000&lt;br /&gt;
* dacă există mai multe submatrice de dimensiune maximă, Gigel o va alege pe cea care are coordonatele colțului stânga sus(implicit și ale celui dreapta jos) mai mici.&lt;br /&gt;
* Prin bucată de teren cât mai mare se înțelege o submatrice care respectă proprietatea din enunț(este alcătuită exclusiv din elemente cu valoarea &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;) și are număr maxim de elemente.&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; terencasa_low.in&lt;br /&gt;
: 5 5&lt;br /&gt;
: 0 1 1 0 1&lt;br /&gt;
: 1 1 0 1 0&lt;br /&gt;
: 0 1 1 1 0&lt;br /&gt;
: 1 1 1 1 0&lt;br /&gt;
: 1 1 1 1 1&lt;br /&gt;
; terencasa_low.out&lt;br /&gt;
: 3&lt;br /&gt;
: 3 2 5 4&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
În fișierul de intrare există o singură submatrice de dimensiune maximă. Aceasta are dimensiunea &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; și colțurile de coordonate &amp;#039;&amp;#039;&amp;#039;3 2&amp;#039;&amp;#039;&amp;#039;, respectiv &amp;#039;&amp;#039;&amp;#039;5 4&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; terencasa_low.in&lt;br /&gt;
: 6 6&lt;br /&gt;
: 1 1 1 0 1 0&lt;br /&gt;
: 1 1 1 0 0 0&lt;br /&gt;
: 1 1 1 0 0 0&lt;br /&gt;
: 0 1 0 1 1 1&lt;br /&gt;
: 0 0 0 1 1 1&lt;br /&gt;
: 0 0 1 1 1 1&lt;br /&gt;
; terencasa_low.out&lt;br /&gt;
: 3&lt;br /&gt;
: 1 1 3 3 &lt;br /&gt;
== Explicatie ==&lt;br /&gt;
În fișierul de intrare există &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; submatrice de dimensiune maximă. Dimensiunea acestora este &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;, iar coordonatele minime sunt &amp;#039;&amp;#039;&amp;#039;1 1&amp;#039;&amp;#039;&amp;#039;, respectiv &amp;#039;&amp;#039;&amp;#039;3 3&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Funcția care găsește cea mai mare submatrice pătrată cu toate elementele 1&lt;br /&gt;
def max_square(matrix):&lt;br /&gt;
    # Obținem dimensiunile matricei&lt;br /&gt;
    n = len(matrix)&lt;br /&gt;
    m = len(matrix[0])&lt;br /&gt;
    &lt;br /&gt;
    # Inițializăm o matrice auxiliară cu 0&lt;br /&gt;
    S = [[0 for k in range(m+1)] for l in range(n+1)]&lt;br /&gt;
    &lt;br /&gt;
    # Parcurgem matricea și actualizăm matricea auxiliară&lt;br /&gt;
    for i in range(1, n+1):&lt;br /&gt;
        for j in range(1, m+1):&lt;br /&gt;
            # Dacă elementul curent este 1, actualizăm elementul corespunzător din matricea auxiliară&lt;br /&gt;
            if (matrix[i-1][j-1] == 1):&lt;br /&gt;
                S[i][j] = min(S[i][j-1], S[i-1][j], S[i-1][j-1]) + 1&lt;br /&gt;
            else:&lt;br /&gt;
                S[i][j] = 0&lt;br /&gt;
    &lt;br /&gt;
    # Căutăm elementul maxim din matricea auxiliară&lt;br /&gt;
    max_of_s = S[0][0]&lt;br /&gt;
    max_i = 0&lt;br /&gt;
    max_j = 0&lt;br /&gt;
    for i in range(n+1):&lt;br /&gt;
        for j in range(m+1):&lt;br /&gt;
            if (max_of_s &amp;lt; S[i][j]):&lt;br /&gt;
                max_of_s = S[i][j]&lt;br /&gt;
                max_i = i&lt;br /&gt;
                max_j = j&lt;br /&gt;
    &lt;br /&gt;
    # Returnăm coordonatele și dimensiunea celei mai mari submatrice pătrate cu toate elementele 1&lt;br /&gt;
    return (max_i, max_j, max_of_s)&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
with open(&amp;#039;terencasa_low.in&amp;#039;, &amp;#039;r&amp;#039;) as f:&lt;br /&gt;
    n, m = map(int, f.readline().split())&lt;br /&gt;
    matrix = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        row = list(map(int, f.readline().split()))&lt;br /&gt;
        matrix.append(row)&lt;br /&gt;
&lt;br /&gt;
# Apelarea funcției și afișarea rezultatelor&lt;br /&gt;
i, j, max_of_s = max_square(matrix)&lt;br /&gt;
with open(&amp;#039;terencasa_low.out&amp;#039;, &amp;#039;w&amp;#039;) as f:&lt;br /&gt;
    f.write(str(max_of_s) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
    f.write(str(i - max_of_s + 1) + &amp;#039; &amp;#039; + str(j - max_of_s + 1) + &amp;#039; &amp;#039; + str(i) + &amp;#039; &amp;#039; + str(j) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ghisa Catalin</name></author>
	</entry>
</feed>