<?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=2353_-_Padure</id>
	<title>2353 - Padure - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2353_-_Padure"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2353_-_Padure&amp;action=history"/>
	<updated>2026-05-01T07:43:50Z</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=2353_-_Padure&amp;diff=8156&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Într-o pădure există plantați copaci pe &lt;code&gt;N&lt;/code&gt; linii și &lt;code&gt;M&lt;/code&gt; coloane. Copacii au diferite înălțimi. O zonă dreptunghiulară de copaci din cadrul pădurii trebuie tăiată. Pădurarul trebuie să aleagă dintre &lt;code&gt;C&lt;/code&gt; zone, o zonă în care suma înălțimilor copacilor este maximă. Deoarece pădurarului îi plac numerele prime, el va alege o zonă în care suma înălțimilor copacilor este și un număr prim.  = Cerința = Determinați sum...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2353_-_Padure&amp;diff=8156&amp;oldid=prev"/>
		<updated>2023-12-15T18:09:55Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Într-o pădure există plantați copaci pe &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; coloane. Copacii au diferite înălțimi. O zonă dreptunghiulară de copaci din cadrul pădurii trebuie tăiată. Pădurarul trebuie să aleagă dintre &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; zone, o zonă în care suma înălțimilor copacilor este maximă. Deoarece pădurarului îi plac numerele prime, el va alege o zonă în care suma înălțimilor copacilor este și un număr prim.  = Cerința = Determinați sum...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Într-o pădure există plantați copaci pe &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii și &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; coloane. Copacii au diferite înălțimi. O zonă dreptunghiulară de copaci din cadrul pădurii trebuie tăiată. Pădurarul trebuie să aleagă dintre &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; zone, o zonă în care suma înălțimilor copacilor este maximă. Deoarece pădurarului îi plac numerele prime, el va alege o zonă în care suma înălțimilor copacilor este și un număr prim.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Determinați suma din enunț pentru zonele puse la dispoziție.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;padure.in&amp;lt;/code&amp;gt; conţine pe prima linie numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; cu semnificația din enunț, pe următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii înălțimile copacilor, câte &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; pe o linie, separate prin câte un spațiu, iar pe următoarele &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; linii, câte patru pe fiecare linie,  valorile &amp;lt;code&amp;gt;l1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c2&amp;lt;/code&amp;gt; separate prin câte un spațiu, ce reprezintă coordonatele colțului stânga-sus, respectiv coordonatele colțului dreapta-jos a unei zone ce poate fi tăiată.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;padure.out&amp;lt;/code&amp;gt; va conţine pe prima linie rezultatul corespunzător cerinței problemei.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N, M ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ C ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* numerotarea liniilor și coloanelor din pădure începe de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; l1 ≤ l2 ≤ N&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt; c1 ≤ c2 ≤ M&amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru fiecare set de date de intrare există soluție&lt;br /&gt;
* înălțimea copacilor nu depășește valoarea &amp;lt;code&amp;gt;100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;padure.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 4 4 2&lt;br /&gt;
 9 3 2 4&lt;br /&gt;
 6 2 1 5&lt;br /&gt;
 2 3 2 4&lt;br /&gt;
 4 5 3 4&lt;br /&gt;
 1 1 3 3&lt;br /&gt;
 2 2 4 4&lt;br /&gt;
&amp;lt;code&amp;gt;padure.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 29&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
&amp;lt;code&amp;gt;9 3 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;6 2 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;2 3 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are suma &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, dar nu este prim&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;2 1 5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;3 2 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;5 3 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are suma &amp;lt;code&amp;gt;29&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Încărcare soluție ==&lt;br /&gt;
&lt;br /&gt;
=== Lipește codul aici ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
n, m, k = map(int, input().split())&lt;br /&gt;
A = [[0] * (m + 1) for _ in range(n + 1)]&lt;br /&gt;
S = [[0] * (m + 1) for _ in range(n + 1)]&lt;br /&gt;
smax = -200000000&lt;br /&gt;
&lt;br /&gt;
def prim(n):&lt;br /&gt;
    if n == 0 or n == 1:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(math.sqrt(n)) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    for j in range(1, m + 1):&lt;br /&gt;
        A[i][j] = int(input())&lt;br /&gt;
&lt;br /&gt;
for i in range(1, n + 1):&lt;br /&gt;
    for j in range(1, m + 1):&lt;br /&gt;
        S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + A[i][j]&lt;br /&gt;
&lt;br /&gt;
for _ in range(k):&lt;br /&gt;
    i1, j1, i2, j2 = map(int, input().split())&lt;br /&gt;
    s = S[i2][j2] - S[i1 - 1][j2] - S[i2][j1 - 1] + S[i1 - 1][j1 - 1]&lt;br /&gt;
    if s &amp;gt; smax and prim(s):&lt;br /&gt;
        smax = s&lt;br /&gt;
&lt;br /&gt;
print(smax)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>