<?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=2387_-_Mosia_1</id>
	<title>2387 - Mosia 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2387_-_Mosia_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2387_-_Mosia_1&amp;action=history"/>
	<updated>2026-05-01T06:37:46Z</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=2387_-_Mosia_1&amp;diff=9807&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 14:49, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2387_-_Mosia_1&amp;diff=9807&amp;oldid=prev"/>
		<updated>2024-05-18T14:49:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=2387_-_Mosia_1&amp;amp;diff=9807&amp;amp;oldid=9234&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2387_-_Mosia_1&amp;diff=9234&amp;oldid=prev</id>
		<title>Oros Ioana Diana: Pagină nouă: Păcală a primit, aşa cum era învoiala, un petec de teren de pe moşia boierului. Terenul este împrejmuit complet cu segmente drepte de gard ce se sprijină la ambele capete de câte un par zdravăn. La o nouă prinsoare, Păcală iese iar in câştig şi primeşte dreptul să strămute nişte pari, unul câte unul, cum i-o fi voia, astfel încât să-şi extindă suprafaţa de teren. Dar învoiala prevede că fiecare par poate fi mutat în orice direcţie, dar nu pe o di...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2387_-_Mosia_1&amp;diff=9234&amp;oldid=prev"/>
		<updated>2024-01-08T19:31:43Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Păcală a primit, aşa cum era învoiala, un petec de teren de pe moşia boierului. Terenul este împrejmuit complet cu segmente drepte de gard ce se sprijină la ambele capete de câte un par zdravăn. La o nouă prinsoare, Păcală iese iar in câştig şi primeşte dreptul să strămute nişte pari, unul câte unul, cum i-o fi voia, astfel încât să-şi extindă suprafaţa de teren. Dar învoiala prevede că fiecare par poate fi mutat în orice direcţie, dar nu pe o di...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Păcală a primit, aşa cum era învoiala, un petec de teren de pe moşia boierului. Terenul este împrejmuit complet cu segmente drepte de gard ce se sprijină la ambele capete de câte un par zdravăn. La o nouă prinsoare, Păcală iese iar in câştig şi primeşte dreptul să strămute nişte pari, unul câte unul, cum i-o fi voia, astfel încât să-şi extindă suprafaţa de teren. Dar învoiala prevede că fiecare par poate fi mutat în orice direcţie, dar nu pe o distanţă mai mare decât o valoare dată (scrisă pe fiecare par) şi fiecare segment de gard, fiind cam şubred, poate fi rotit şi prelungit de la un singur capăt, celălalt rămânând nemişcat.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Cunoscând poziţiile iniţiale ale parilor şi valoarea înscrisă pe fiecare par, se cere suprafaţa maximă cu care poate să-şi extindă Păcală proprietatea. Se ştie că parii sunt daţi într-o ordine oarecare, poziţiile lor iniţiale sunt date prin numere întregi de cel mult 3 cifre, distanțele pe care fiecare par poate fi deplasat sunt numere naturale strict pozitive şi figura formată de terenul iniţial este un poligon neconcav.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare mosia1in.txt conţine n+1 linii cu următoarele valori:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
n – numărul de pari&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
x[1] y[1] d[1] – coordonatele iniţiale şi distanţa pe care poate fi mutat parul 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
x[2] y[2] d[2] – coordonatele iniţiale şi distanţa pe care poate fi mutat parul 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
x[n] y[n] d[n] – coordonatele iniţiale şi distanţa pe care poate fi mutat parul n&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire mosia1out.txt se scrie un număr real cu 4 zecimale ce reprezintă suprafața maximă cu care se poate mări moșia.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*3 &amp;lt; N ≤ 200 număr natural&lt;br /&gt;
*–1000 &amp;lt; x[i], y[i] &amp;lt; 1000 numere întregi&lt;br /&gt;
*0 &amp;lt; d[i] ≤ 20 numere întregi&lt;br /&gt;
*poligonul neconcav se defineşte ca un poligon convex cu unele vârfuri coliniare&lt;br /&gt;
*poziţiile parilor sunt date într-o ordine oarecare&lt;br /&gt;
*poligonul obţinut după mutarea parilor poate fi concav&lt;br /&gt;
*poziţiile finale ale parilor nu sunt in mod obligatoriu numere naturale&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; mosia1in.txt&lt;br /&gt;
: 4&lt;br /&gt;
: -3 0 2&lt;br /&gt;
: 3 0 3&lt;br /&gt;
: 0 6 2&lt;br /&gt;
: 0 -6 6&lt;br /&gt;
; mosia1out.txt&lt;br /&gt;
: 30.0000&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; mosia1in.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 1 1 2&lt;br /&gt;
: 3 1 3&lt;br /&gt;
: 4 3 4&lt;br /&gt;
: 2 4 2&lt;br /&gt;
: -2 3 5&lt;br /&gt;
; mosia1out.txt&lt;br /&gt;
: 13.5000&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;
#2387 - Mosia 1&lt;br /&gt;
def check_restrictions(N, points):&lt;br /&gt;
    if not (3 &amp;lt; N &amp;lt;= 200):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if not all(-1000 &amp;lt; point[0] &amp;lt; 1000 and -1000 &amp;lt; point[1] &amp;lt; 1000 and 0 &amp;lt; point[2] &amp;lt;= 20 for point in points):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def area_of_polygon(x, y):&lt;br /&gt;
    n = len(x)&lt;br /&gt;
    area = 0&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        j = (i + 1) % n&lt;br /&gt;
        area += x[i] * y[j] - x[j] * y[i]&lt;br /&gt;
    return abs(area) / 2.0&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Citirea datelor de intrare&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;mosia1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
            N = int(file.readline())&lt;br /&gt;
            points = [list(map(int, file.readline().split())) for _ in range(N)]&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        print(&amp;quot;false&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Verificarea restricțiilor&lt;br /&gt;
    if not check_restrictions(N, points):&lt;br /&gt;
        print(&amp;quot;false&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    # Inițializare variabile&lt;br /&gt;
    x = [point[0] for point in points]&lt;br /&gt;
    y = [point[1] for point in points]&lt;br /&gt;
    initial_area = area_of_polygon(x, y)&lt;br /&gt;
&lt;br /&gt;
    # Procesarea mutărilor&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        for j in range(1, points[i][2] + 1):&lt;br /&gt;
            x[i] += 1&lt;br /&gt;
            area = area_of_polygon(x, y)&lt;br /&gt;
            if area &amp;gt; initial_area:&lt;br /&gt;
                initial_area = area&lt;br /&gt;
&lt;br /&gt;
    # Afișarea rezultatului&lt;br /&gt;
    with open(&amp;quot;mosia1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as file_out:&lt;br /&gt;
        file_out.write(f&amp;quot;{initial_area:.4f}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Prin mutarea parilor 1 si 2 cu câte 2 și respectiv 3 unități, se obține un teren având suprafaţa cu 30 de unităţi mai mare decât terenul iniţial.&lt;/div&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
</feed>