<?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=0693_-_Sahara</id>
	<title>0693 - Sahara - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0693_-_Sahara"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0693_-_Sahara&amp;action=history"/>
	<updated>2026-05-03T03:39:09Z</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=0693_-_Sahara&amp;diff=8734&amp;oldid=prev</id>
		<title>Ramona Dragoș: Pagină nouă: == Enunt == Undeva, în deșertul Sahara, ilustrul biolog Sahraa Gaea a conceput și construit un sistem de irigații ingenios, sistem cu care își propune să irige o zonă deșertică dreptunghiulară bogată în nutrienți minerali. Zona deșertică este împărțită în N*M pătrate de latură unitate. În fiecare pătrat se află un dispozitiv de picurare ce asigură o anumită cantitate de apă în funcție de comanda primită de la centrul de control al sistemului....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0693_-_Sahara&amp;diff=8734&amp;oldid=prev"/>
		<updated>2023-12-31T14:58:50Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Undeva, în deșertul Sahara, ilustrul biolog Sahraa Gaea a conceput și construit un sistem de irigații ingenios, sistem cu care își propune să irige o zonă deșertică dreptunghiulară bogată în nutrienți minerali. Zona deșertică este împărțită în N*M pătrate de latură unitate. În fiecare pătrat se află un dispozitiv de picurare ce asigură o anumită cantitate de apă în funcție de comanda primită de la centrul de control al sistemului....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Undeva, în deșertul Sahara, ilustrul biolog Sahraa Gaea a conceput și construit un sistem de irigații ingenios, sistem cu care își propune să irige o zonă deșertică dreptunghiulară bogată în nutrienți minerali. Zona deșertică este împărțită în N*M pătrate de latură unitate. În fiecare pătrat se află un dispozitiv de picurare ce asigură o anumită cantitate de apă în funcție de comanda primită de la centrul de control al sistemului.&lt;br /&gt;
&lt;br /&gt;
Sistemul de irigare este astfel conceput încât să irige (ude), pe baza unor comenzi automatizate, parcele dreptunghiulare ale regiunii deșertice.&lt;br /&gt;
&lt;br /&gt;
Orice parcelă are laturile paralele cu laturile zonei deșertice și este identificată prin coordonatele colțurilor stânga-sus  (x1,y1), respectiv dreapta-jos (x2,y2). La fiecare comandă se specifică parcela care va fi udată și cantitatea de apă (exprimată în litri) cu care va fi irigat fiecare pătrat al acesteia.&lt;br /&gt;
&lt;br /&gt;
Un pătrat al zonei deșertice devine fertil dacă acumulează cel puțin Q litri de apă.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine aria maximă a unei suprafețe conexe fertile. Prin aria unei suprafețe înțelegem numărul de pătrate ce compun suprafața. Orice două pătrate fertile care au o latură comună fac parte din aceeaşi suprafaţă conexă fertilă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare saharain.txt conţine pe prima linie trei numere naturale N M Q despărțite prin câte un spațiu, cu semnificația din enunț.&lt;br /&gt;
&lt;br /&gt;
Pe cea de-a doua linie a fișierului se găsește un număr natural T. Pe fiecare dintre următoarele T linii se află descrierea parcelelor udate sub forma: x1 y1 x2 y2 q , adică cinci numere naturale despărțite prin spațiu, unde x1 y1 x2 y2 reprezintă coordonatele colțurilor stânga-sus, respectiv dreapta-jos ale parcelei, q2 cantitatea de apă cu care va fi irigat fiecare pătrat al parcelei.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire saharaout.txt va conține o singură valoare ce reprezintă aria maximă a unei suprafețe conexe fertile.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*2 &amp;amp;les; N, M &amp;amp;les; 1000&lt;br /&gt;
*1 &amp;amp;les; x1 &amp;amp;les; x2 &amp;amp;les; N, 1 &amp;amp;les; y1 &amp;amp;les; y2 &amp;amp;les; M&lt;br /&gt;
*1 &amp;amp;les; q &amp;amp;les; 1 000&lt;br /&gt;
*1 &amp;amp;les; Q &amp;amp;les; 10 000&lt;br /&gt;
*1 &amp;amp;les; T &amp;amp;les; 50 000&lt;br /&gt;
*Inițial zona deșertică nu conține ”apă”;&lt;br /&gt;
*Pot exista suprafeţe conexe fertile formate dintr-un singur pătrat fertil;&lt;br /&gt;
*Parcelele se pot suprapune.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
;saharain.txt&lt;br /&gt;
:8 7 5&lt;br /&gt;
:7&lt;br /&gt;
:1 1 3 6 1&lt;br /&gt;
:4 2 5 7 2&lt;br /&gt;
:2 3 4 7 3&lt;br /&gt;
:1 2 4 3 3&lt;br /&gt;
:5 1 6 3 4&lt;br /&gt;
:5 5 7 6 2&lt;br /&gt;
:6 4 8 7 3&lt;br /&gt;
;saharaout.txt&lt;br /&gt;
:10&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
;saharain.txt&lt;br /&gt;
: 0 0 0 &lt;br /&gt;
: 0&lt;br /&gt;
: Nu au fost respectate cerintele impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0693 - Sahara&lt;br /&gt;
def read_input(file_name):&lt;br /&gt;
    try:&lt;br /&gt;
        with open(file_name, &amp;#039;r&amp;#039;) as file:&lt;br /&gt;
            N, M, Q = map(int, file.readline().split())&lt;br /&gt;
            T = int(file.readline())&lt;br /&gt;
            parcels = []&lt;br /&gt;
&lt;br /&gt;
            for _ in range(T):&lt;br /&gt;
                x1, y1, x2, y2, q = map(int, file.readline().split())&lt;br /&gt;
                parcels.append(((x1, y1), (x2, y2), q))&lt;br /&gt;
&lt;br /&gt;
            return N, M, Q, T, parcels&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Nu au fost respectate cerințele impuse: {str(e)}&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
def write_output(file_name, result):&lt;br /&gt;
    with open(file_name, &amp;#039;w&amp;#039;) as file:&lt;br /&gt;
        if result is not None:&lt;br /&gt;
            file.write(str(result) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def max_connected_area(N, M, Q, parcels):&lt;br /&gt;
    area = [[0] * M for _ in range(N)]&lt;br /&gt;
&lt;br /&gt;
    def flood_fill(x, y, current_area, visited):&lt;br /&gt;
        if x &amp;lt; 0 or x &amp;gt;= N or y &amp;lt; 0 or y &amp;gt;= M or visited[x][y] or area[x][y] &amp;lt; Q:&lt;br /&gt;
            return 0&lt;br /&gt;
&lt;br /&gt;
        visited[x][y] = True&lt;br /&gt;
        current_area += 1&lt;br /&gt;
&lt;br /&gt;
        directions = [(1, 0), (-1, 0), (0, 1), (0, -1)]&lt;br /&gt;
        for dx, dy in directions:&lt;br /&gt;
            current_area += flood_fill(x + dx, y + dy, 0, visited)&lt;br /&gt;
&lt;br /&gt;
        return current_area&lt;br /&gt;
&lt;br /&gt;
    max_area = 0&lt;br /&gt;
&lt;br /&gt;
    for parcel in parcels:&lt;br /&gt;
        (x1, y1), (x2, y2), q = parcel&lt;br /&gt;
&lt;br /&gt;
        for i in range(x1 - 1, x2):&lt;br /&gt;
            for j in range(y1 - 1, y2):&lt;br /&gt;
                area[i][j] += q&lt;br /&gt;
&lt;br /&gt;
    visited = [[False] * M for _ in range(N)]&lt;br /&gt;
&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        for j in range(M):&lt;br /&gt;
            if not visited[i][j] and area[i][j] &amp;gt;= Q:&lt;br /&gt;
                current_area = flood_fill(i, j, 0, visited)&lt;br /&gt;
                max_area = max(max_area, current_area)&lt;br /&gt;
&lt;br /&gt;
    return max_area&lt;br /&gt;
&lt;br /&gt;
def main(input_file, output_file):&lt;br /&gt;
    result = read_input(input_file)&lt;br /&gt;
    if result is not None:&lt;br /&gt;
        N, M, Q, T, parcels = result&lt;br /&gt;
        result = max_connected_area(N, M, Q, parcels)&lt;br /&gt;
        write_output(output_file, result)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(&amp;quot;saharain.txt&amp;quot;, &amp;quot;saharaout.txt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ramona Dragoș</name></author>
	</entry>
</feed>