<?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=2383_-_Plaja1</id>
	<title>2383 - Plaja1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2383_-_Plaja1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2383_-_Plaja1&amp;action=history"/>
	<updated>2026-05-01T06:38:37Z</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=2383_-_Plaja1&amp;diff=9661&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Primăria orașului Constanța reamenajează plaja din stațiunea Mamaia. Aceasta este reprezentată ca o zonă dreptunghiulară cu lățimea de &lt;code&gt;a&lt;/code&gt; unități și lungimea de &lt;code&gt;b&lt;/code&gt; unități. Pe plajă sunt trasate linii paralele cu laturile dreptunghiului astfel încât să formeze pătrate cu latura de o unitate, numite zone. Pe plajă se vor pune obiecte: umbrele și prosoape. Se consideră că dacă un obiect intră în interiorul unei zone, o ocupă...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2383_-_Plaja1&amp;diff=9661&amp;oldid=prev"/>
		<updated>2024-02-18T17:17:31Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Primăria orașului Constanța reamenajează plaja din stațiunea Mamaia. Aceasta este reprezentată ca o zonă dreptunghiulară cu lățimea de &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; unități și lungimea de &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; unități. Pe plajă sunt trasate linii paralele cu laturile dreptunghiului astfel încât să formeze pătrate cu latura de o unitate, numite zone. Pe plajă se vor pune obiecte: umbrele și prosoape. Se consideră că dacă un obiect intră în interiorul unei zone, o ocupă...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Primăria orașului Constanța reamenajează plaja din stațiunea Mamaia. Aceasta este reprezentată ca o zonă dreptunghiulară cu lățimea de &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; unități și lungimea de &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; unități. Pe plajă sunt trasate linii paralele cu laturile dreptunghiului astfel încât să formeze pătrate cu latura de o unitate, numite zone. Pe plajă se vor pune obiecte: umbrele și prosoape. Se consideră că dacă un obiect intră în interiorul unei zone, o ocupă în întregime. Se poziționează &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; umbrele de soare. Într-o zonă se poate așeza cel mult o umbrelă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; turişti vin şi îşi aşează prosoapele pe plajă. Un prosop are formă dreptunghiulară şi va fi aşezat paralel cu laturile dreptunghiului. Turiştii îşi pot aşeza prosoapele pe zone libere sau peste prosoape deja aşezate. Un turist nu îşi poate aşeza însă prosopul pe plajă dacă suprafaţa acoperită de acesta include cel puţin o zonă în care se află o umbrelă.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; localnici au suprafeţe favorite pentru aşezarea prosoapelor. O suprafaţă favorită are forma unui dreptunghi cu laturile paralele cu laturile dreptunghiului care marchează plaja. După ce turiştii termină aşezarea prosoapelor, localnicii  verifică dacă zonele din suprafaţa favorită sunt libere (neacoperite de prosoape aşezate de turişti sau de umbrele).&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să determine numărul de turişti care au reuşit să îşi aşeze prosoapele pe plajă, precum și numărul de localnici ale căror zone favorite sunt libere.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;plaja1.in&amp;lt;/code&amp;gt; conține pe prima linie trei numere naturale, separate prin câte un spațiu, &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt;, având semnificația din enunț. Fiecare din următoarele &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; linii conține o pereche de numere naturale &amp;lt;code&amp;gt;x y&amp;lt;/code&amp;gt;, reprezentând o zonă în care se găsește o umbrelă. Următoarea linie din fișier conține un număr natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, reprezentând numărul de turiști. Următoarele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii descriu prosoapele turiștilor. Fiecare linie conține patru numere naturale &amp;lt;code&amp;gt;x1 y1 x2 y2&amp;lt;/code&amp;gt;, ce reprezintă colțurile unui prosop. Linia următoare conține o singură valoare, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, reprezentând numărul de localnici. Pe următoarele &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; linii se află câte patru numere, separate prin câte un spațiu, &amp;lt;code&amp;gt;x1’ y1’ x2’ y2’&amp;lt;/code&amp;gt;, ce reprezintă colțurile unei suprafețe favorite.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;plaja1.out&amp;lt;/code&amp;gt; conţine pe prima linie două numere naturale separate printr-un spaţiu. Primul număr reprezintă numărul de turişti care şi-au aşezat prosoapele pe plajă, iar cel de-al doilea număr reprezintă numărul de localnici ale căror zone favorite sunt libere.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* Colţul din stânga sus al zonei dreptunghiulare are coordonatele &amp;lt;code&amp;gt;(1,1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ a, b ≤ 2.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ u ≤ 100&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;3 ≤ m, n ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Un prosop descris de &amp;lt;code&amp;gt;(x1, y1, x2, y2)&amp;lt;/code&amp;gt; va avea &amp;lt;code&amp;gt;1 ≤ x1 ≤ x2 ≤ a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;1 ≤ y1 ≤ y2 ≤ b&amp;lt;/code&amp;gt;&lt;br /&gt;
* O suprafaţă favorită descrisă de &amp;lt;code&amp;gt;(x1’, y1’, x2’, y2’)&amp;lt;/code&amp;gt; va avea &amp;lt;code&amp;gt;1 ≤ x1’ ≤ x2’ ≤ a&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;1 ≤ y1’ ≤ y2’ ≤ b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;plaja1.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 12 13 1&lt;br /&gt;
 6 11&lt;br /&gt;
 4&lt;br /&gt;
 3 4 7 7&lt;br /&gt;
 5 6 8 8&lt;br /&gt;
 9 2 10 3&lt;br /&gt;
 5 10 8 12&lt;br /&gt;
 3&lt;br /&gt;
 1 8 3 13&lt;br /&gt;
 10 3 12 4&lt;br /&gt;
 2 10 5 12&lt;br /&gt;
&amp;lt;code&amp;gt;plaja1.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 3 2&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 sys&lt;br /&gt;
&lt;br /&gt;
NMax = 2004&lt;br /&gt;
&lt;br /&gt;
M, N, A, B, U = 0, 0, 0, 0, 0&lt;br /&gt;
X = [0] * 128&lt;br /&gt;
Y = [0] * 128&lt;br /&gt;
S = [[0 for _ in range(NMax)] for _ in range(NMax)]&lt;br /&gt;
Res = 0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global M, N, A, B, U, X, Y, S, Res&lt;br /&gt;
&lt;br /&gt;
    i, j, x1, y1, x2, y2 = 0, 0, 0, 0, 0, 0&lt;br /&gt;
    ok = False&lt;br /&gt;
&lt;br /&gt;
    sys.stdin = open(&amp;#039;plaja1.intxt&amp;#039;, &amp;#039;r&amp;#039;)&lt;br /&gt;
    sys.stdout = open(&amp;#039;plaja1.outtxt&amp;#039;, &amp;#039;w&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    A, B, U = map(int, input().split())&lt;br /&gt;
    for i in range(1, U + 1):&lt;br /&gt;
        X[i], Y[i] = map(int, input().split())&lt;br /&gt;
    N = int(input())&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        x1, y1, x2, y2 = map(int, input().split())&lt;br /&gt;
        &lt;br /&gt;
        for j in range(1, U + 1):&lt;br /&gt;
            if x1 &amp;lt;= X[j] &amp;lt;= x2 and y1 &amp;lt;= Y[j] &amp;lt;= y2:&lt;br /&gt;
                ok = False&lt;br /&gt;
                break&lt;br /&gt;
            ok = True&lt;br /&gt;
&lt;br /&gt;
        if not ok:&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        Res += 1&lt;br /&gt;
        S[x1][y1] += 1&lt;br /&gt;
        S[x2 + 1][y2 + 1] += 1&lt;br /&gt;
        S[x1][y2 + 1] -= 1&lt;br /&gt;
        S[x2 + 1][y1] -= 1&lt;br /&gt;
&lt;br /&gt;
    print(Res)&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, A + 1):&lt;br /&gt;
        for j in range(1, B + 1):&lt;br /&gt;
            S[i][j] += S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1]&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, U + 1):&lt;br /&gt;
        S[X[i]][Y[i]] = 1&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, A + 1):&lt;br /&gt;
        for j in range(1, B + 1):&lt;br /&gt;
            S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + (S[i][j] != 0)&lt;br /&gt;
&lt;br /&gt;
    Res = 0&lt;br /&gt;
    M = int(input())&lt;br /&gt;
    for _ in range(M):&lt;br /&gt;
        x1, y1, x2, y2 = map(int, input().split())&lt;br /&gt;
        if S[x2][y2] - S[x2][y1 - 1] - S[x1 - 1][y2] + S[x1 - 1][y1 - 1] == 0:&lt;br /&gt;
            Res += 1&lt;br /&gt;
&lt;br /&gt;
    print(Res)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>