<?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=2898_-_Nave</id>
	<title>2898 - Nave - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2898_-_Nave"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2898_-_Nave&amp;action=history"/>
	<updated>2026-05-01T05:38:59Z</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=2898_-_Nave&amp;diff=10191&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: Echipajul navei Enterprise, a descoperit pe planeta Marte, zona în care sunt amplasate b baze militare care adăpostesc navele de luptă ale marțienilor. Echipajul navei a reușit să cartografieze zona și a împărțit harta planetei în &lt;code&gt;n x m&lt;/code&gt; zone de latură 1, dispuse pe n linii (numerotate de sus în jos de la &lt;code&gt;1&lt;/code&gt; la &lt;code&gt;n&lt;/code&gt;) și m coloane (numerotate de la stânga la dreapta de la &lt;code&gt;1&lt;/code&gt; la &lt;code&gt;m&lt;/code&gt;). Astfel fiecare zonă p...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2898_-_Nave&amp;diff=10191&amp;oldid=prev"/>
		<updated>2024-07-28T08:55:16Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Echipajul navei Enterprise, a descoperit pe planeta Marte, zona în care sunt amplasate b baze militare care adăpostesc navele de luptă ale marțienilor. Echipajul navei a reușit să cartografieze zona și a împărțit harta planetei în &amp;lt;code&amp;gt;n x m&amp;lt;/code&amp;gt; zone de latură 1, dispuse pe n linii (numerotate de sus în jos de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;) și m coloane (numerotate de la stânga la dreapta de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;). Astfel fiecare zonă p...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Echipajul navei Enterprise, a descoperit pe planeta Marte, zona în care sunt amplasate b baze militare care adăpostesc navele de luptă ale marțienilor. Echipajul navei a reușit să cartografieze zona și a împărțit harta planetei în &amp;lt;code&amp;gt;n x m&amp;lt;/code&amp;gt; zone de latură 1, dispuse pe n linii (numerotate de sus în jos de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;) și m coloane (numerotate de la stânga la dreapta de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt;). Astfel fiecare zonă poate fi identificată prin numărul liniei și al coloanei pe care se află. În fiecare astfel de zonă se află o bază a marțienilor ce adăpostește un număr de nave. Căpitanul navei Enterprise, Jean-Luc Picard a elaborat o strategie de atac terestru a acestor baze militare. &lt;br /&gt;
&lt;br /&gt;
Nava Enterprise poate ateriza într-o zonă în care nu se află o bază marțiană și poate lansa un singur atac (deoarece după primul atac bazele marțiene își vor activa scuturile de protecție). La un atac se vor emite simultan 2 raze laser care vor distruge toate navele marțiene existente în bazele aflate pe direcția acestor raze, în ambele sensuri. Razele sunt emise din centrul zonei în care a aterizat Enterprise și fac unghiuri de &amp;lt;code&amp;gt;45&amp;lt;sup&amp;gt;o&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;, respectiv &amp;lt;code&amp;gt;135&amp;lt;sup&amp;gt;o&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt; cu linia pe care se află Enterprise.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieți un program care, cunoscând configurația bazelor marțiene, determină numărul maxim de nave marțiene pe care Enterprise le poate distruge la un singur atac, precum și linia și coloana zonei în care poate ateriza nava Enterprise astfel încât să distrugă un număr maxim de nave; dacă există mai multe zone în care poate ateriza convenabil pentru Enterprise este să aleagă zona pentru care linia este maximă; dacă există mai multe zone pe linia maximă, se va alege cea pentru care coloana este maximă.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;nave.in&amp;lt;/code&amp;gt; conține pe prima linie trei numere naturale &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;b&amp;lt;/code&amp;gt;, separate prin câte un spațiu, reprezentând numărul de linii, numărul de coloane ale hărții planetei Marte, respectiv numărul  de baze marțiene. Pe fiecare dintre următoarele &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; linii este descrisă câte o bază marțiană sub forma a trei numere naturale separate prin câte un spațiu &amp;lt;code&amp;gt;lin col nr&amp;lt;/code&amp;gt;, reprezentând linia și coloana pe care se află baza marțiană, respectiv numărul de nave aflate în baza marțiană respectivă.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;nave.out&amp;lt;/code&amp;gt; va conține pe prima linie trei numere naturale &amp;lt;code&amp;gt;nrmax&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;linmax&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colmax&amp;lt;/code&amp;gt;, separate prin câte un spațiu, reprezentând numărul maxim de nave marțiene pe care Enterprise le poate distruge la un singur atac, precum și linia și coloana zonei în care poate ateriza nava Enterprise astfel încât să distrugă un număr maxim de nave; dacă există mai multe zone în care poate ateriza convenabil pentru Enterprise este să aleagă zona pentru care linia este maximă; dacă există mai multe zone pe linia maximă, se va alege cea pentru care coloana este maximă.&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;n x m ≤ b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;b ≤ n * m / 2&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ lin ≤ n&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;1 ≤ col ≤ m&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;1 ≤ nr ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;nave.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 5 4 9&lt;br /&gt;
 1 1 3&lt;br /&gt;
 1 2 5&lt;br /&gt;
 2 2 7&lt;br /&gt;
 2 4 9&lt;br /&gt;
 3 1 6&lt;br /&gt;
 3 3 8 &lt;br /&gt;
 4 1 1 &lt;br /&gt;
 5 1 4&lt;br /&gt;
 5 3 2&lt;br /&gt;
&amp;lt;code&amp;gt;nave.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 29 4 2&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Harta zonei unde se găsesc bazele marțiene este:&lt;br /&gt;
&lt;br /&gt;
Dacă nava Enterprise aterizează în zona situată pe linia &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; și coloana &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, va distruge un număr maxim de nave (&amp;lt;code&amp;gt;29&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def read_input():&lt;br /&gt;
    n, m = map(int, input().split())&lt;br /&gt;
    harta = []&lt;br /&gt;
    for _ in range(n):&lt;br /&gt;
        linie = list(map(int, input().split()))&lt;br /&gt;
        harta.append(linie)&lt;br /&gt;
    return n, m, harta&lt;br /&gt;
&lt;br /&gt;
def calculeaza_sume_diagonale(n, m, harta):&lt;br /&gt;
    diag1 = [[0] * m for _ in range(n)]&lt;br /&gt;
    diag2 = [[0] * m for _ in range(n)]&lt;br /&gt;
    &lt;br /&gt;
    # Sume diagonale 45° (/)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if i &amp;gt; 0 and j &amp;gt; 0:&lt;br /&gt;
                diag1[i][j] = harta[i][j] + diag1[i-1][j-1]&lt;br /&gt;
            else:&lt;br /&gt;
                diag1[i][j] = harta[i][j]&lt;br /&gt;
&lt;br /&gt;
    # Sume diagonale 135° (\)&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if i &amp;gt; 0 and j &amp;lt; m - 1:&lt;br /&gt;
                diag2[i][j] = harta[i][j] + diag2[i-1][j+1]&lt;br /&gt;
            else:&lt;br /&gt;
                diag2[i][j] = harta[i][j]&lt;br /&gt;
&lt;br /&gt;
    return diag1, diag2&lt;br /&gt;
&lt;br /&gt;
def gaseste_punct_optim(n, m, harta, diag1, diag2):&lt;br /&gt;
    max_nave = 0&lt;br /&gt;
    coordonate_optime = (-1, -1)&lt;br /&gt;
    &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(m):&lt;br /&gt;
            if harta[i][j] == 0:  # Poate ateriza doar într-o zonă fără bază marțiană&lt;br /&gt;
                suma_nave = 0&lt;br /&gt;
                if i &amp;gt; 0 and j &amp;gt; 0:&lt;br /&gt;
                    suma_nave += diag1[i-1][j-1]&lt;br /&gt;
                if i &amp;gt; 0 and j &amp;lt; m - 1:&lt;br /&gt;
                    suma_nave += diag2[i-1][j+1]&lt;br /&gt;
                &lt;br /&gt;
                if suma_nave &amp;gt; max_nave:&lt;br /&gt;
                    max_nave = suma_nave&lt;br /&gt;
                    coordonate_optime = (i + 1, j + 1)&lt;br /&gt;
                elif suma_nave == max_nave:&lt;br /&gt;
                    if i + 1 &amp;gt; coordonate_optime[0] or (i + 1 == coordonate_optime[0] and j + 1 &amp;gt; coordonate_optime[1]):&lt;br /&gt;
                        coordonate_optime = (i + 1, j + 1)&lt;br /&gt;
&lt;br /&gt;
    return max_nave, coordonate_optime&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, m, harta = read_input()&lt;br /&gt;
    diag1, diag2 = calculeaza_sume_diagonale(n, m, harta)&lt;br /&gt;
    max_nave, coordonate_optime = gaseste_punct_optim(n, m, harta, diag1, diag2)&lt;br /&gt;
    &lt;br /&gt;
    print(max_nave)&lt;br /&gt;
    print(coordonate_optime[0], coordonate_optime[1])&lt;br /&gt;
&lt;br /&gt;
# Apelare funcție principală&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>RaulOtet</name></author>
	</entry>
</feed>