<?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=1972_-_Hambar</id>
	<title>1972 - Hambar - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1972_-_Hambar"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1972_-_Hambar&amp;action=history"/>
	<updated>2026-05-01T06:37:48Z</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=1972_-_Hambar&amp;diff=8781&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Enunț == Gigel are o grădina sub forma unei matrice binare de ordin &#039;&#039;&#039;N&#039;&#039;&#039;, unde 0 reprezintă teren liber, &#039;&#039;&#039;1&#039;&#039;&#039; reprezintă pomi. El dorește să construiască un hambar pe dreptunghiul de arie maximă format doar din &#039;&#039;&#039;0&#039;&#039;&#039;. == Cerința == Ajutați-l pe Gigel să găsească dreptunghiul de arie maximă format doar din &#039;&#039;&#039;0&#039;&#039;&#039;. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;hambarin.txt&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;N&#039;&#039;&#039; și &#039;&#039;&#039;M&#039;&#039;&#039;, reprezentând dimensinu...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1972_-_Hambar&amp;diff=8781&amp;oldid=prev"/>
		<updated>2024-01-02T18:06:02Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Gigel are o grădina sub forma unei matrice binare de ordin &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;, unde 0 reprezintă teren liber, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; reprezintă pomi. El dorește să construiască un hambar pe dreptunghiul de arie maximă format doar din &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. == Cerința == Ajutați-l pe Gigel să găsească dreptunghiul de arie maximă format doar din &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;hambarin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;, reprezentând dimensinu...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Gigel are o grădina sub forma unei matrice binare de ordin &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;, unde 0 reprezintă teren liber, &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; reprezintă pomi. El dorește să construiască un hambar pe dreptunghiul de arie maximă format doar din &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Ajutați-l pe Gigel să găsească dreptunghiul de arie maximă format doar din &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;hambarin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;, reprezentând dimensinunea matricei, respectiv numărul de pomi, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; linii se vor găsi perechi numere &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039;, separate printr-un spațiu, reprezentând indicele liniei, respectiv al coloanei pe care se află un pom.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;hambarout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039;, reprezentând aria maximă a unei suprafețe dreptunghiulare ce nu conține &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ N, M ≤ 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Nu se vor afla &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; sau mai mulți pomi în același loc.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; hambarin.txt&lt;br /&gt;
: 5 5&lt;br /&gt;
: 1 3&lt;br /&gt;
: 2 1&lt;br /&gt;
: 2 5&lt;br /&gt;
: 5 1&lt;br /&gt;
: 5 5&lt;br /&gt;
; hambarout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; hambarin.txt&lt;br /&gt;
: 5 5&lt;br /&gt;
: 1 3&lt;br /&gt;
: 2 1&lt;br /&gt;
: 2 5&lt;br /&gt;
: 5 1&lt;br /&gt;
: 5 1000&lt;br /&gt;
; hambarout.txt&lt;br /&gt;
: Datele introduse nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 1972 - Hambar&lt;br /&gt;
def validare(dim_n1, dim_m1, lista_pomi1):           # functia de validare a datelor de intrare&lt;br /&gt;
    if dim_n1 &amp;lt; 1 or dim_n1 &amp;gt; 1000 or dim_m1 &amp;lt; 1 or dim_m1 &amp;gt; 1000:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for pom in lista_pomi1:&lt;br /&gt;
        if pom[0] &amp;lt; 1 or pom[0] &amp;gt; dim_n1 or pom[1] &amp;lt; 1 or pom[1] &amp;gt; dim_n1:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def arie_maxima(dim_n1, lista_pomi1):                     # functia de rezolvare&lt;br /&gt;
    matrice = [[0] * dim_n1 for _ in range(dim_n1)]&lt;br /&gt;
    for pom in lista_pomi1:&lt;br /&gt;
        matrice[pom[0]-1][pom[1]-1] = 1&lt;br /&gt;
&lt;br /&gt;
    dp = [[0] * dim_n1 for _ in range(dim_n1)]&lt;br /&gt;
    max_area = 0&lt;br /&gt;
&lt;br /&gt;
    for i in range(dim_n1):&lt;br /&gt;
        for j in range(dim_n1):&lt;br /&gt;
            if matrice[i][j] == 0:&lt;br /&gt;
                dp[i][j] = dp[i-1][j] + 1 if i &amp;gt; 0 else 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(dim_n1):&lt;br /&gt;
        for j in range(dim_n1):&lt;br /&gt;
            width = dp[i][j]&lt;br /&gt;
            for k in range(i, -1, -1):&lt;br /&gt;
                width = min(width, dp[k][j])&lt;br /&gt;
                max_area = max(max_area, width * (i-k+1))&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(str(max_area))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;hambarin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;hambarout.txt&amp;quot;, &amp;quot;w&amp;quot;)       # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        dim_n, dim_m = map(int, fisier_intrare.readline().split())&lt;br /&gt;
        lista_pomi = [list(map(int, fisier_intrare.readline().split())) for _ in range(dim_m)]&lt;br /&gt;
&lt;br /&gt;
        validare(dim_n, dim_m, lista_pomi)                 # apelul functiei de validare&lt;br /&gt;
        arie_maxima(dim_n, lista_pomi)               # apelul functiei de rezolvare&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>