<?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=1089_-_Cladiri_1</id>
	<title>1089 - Cladiri 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=1089_-_Cladiri_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1089_-_Cladiri_1&amp;action=history"/>
	<updated>2026-05-01T05:40:54Z</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=1089_-_Cladiri_1&amp;diff=9640&amp;oldid=prev</id>
		<title>Raul: Pagină nouă: Institutul de Fizică a Pământului studiază efectele unui potenţial cutremur folosind simulări computerizate. Harta plană a clădirilor de pe un teritoriu oarecare este reprezentată folosind coordonatele GPS în plan, longitudine şi latitudine, faţă de un reper considerat de coordonate &lt;code&gt;(0,0)&lt;/code&gt;, ca în figura de mai jos.  Fiecare dintre clădirile aflate pe hartă, au două coordonate GPS, (Longitudine, Latitudine) şi un Grad de rezistenţă la cutremure....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1089_-_Cladiri_1&amp;diff=9640&amp;oldid=prev"/>
		<updated>2024-02-13T14:55:18Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Institutul de Fizică a Pământului studiază efectele unui potenţial cutremur folosind simulări computerizate. Harta plană a clădirilor de pe un teritoriu oarecare este reprezentată folosind coordonatele GPS în plan, longitudine şi latitudine, faţă de un reper considerat de coordonate &amp;lt;code&amp;gt;(0,0)&amp;lt;/code&amp;gt;, ca în figura de mai jos.  Fiecare dintre clădirile aflate pe hartă, au două coordonate GPS, (Longitudine, Latitudine) şi un Grad de rezistenţă la cutremure....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Institutul de Fizică a Pământului studiază efectele unui potenţial cutremur folosind simulări computerizate. Harta plană a clădirilor de pe un teritoriu oarecare este reprezentată folosind coordonatele GPS în plan, longitudine şi latitudine, faţă de un reper considerat de coordonate &amp;lt;code&amp;gt;(0,0)&amp;lt;/code&amp;gt;, ca în figura de mai jos.&lt;br /&gt;
&lt;br /&gt;
Fiecare dintre clădirile aflate pe hartă, au două coordonate GPS, (Longitudine, Latitudine) şi un Grad de rezistenţă la cutremure.&lt;br /&gt;
&lt;br /&gt;
Un cutremur se poate produce în orice punct de coordonate de pe hartă, numit centrul seismului şi are o anumită intensitate. Unda de şoc se propagă sub forma unor pătrate concentrice cu centrul seismului, numite nivele (nivelul &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; reprezintă centrul seismului, nivelul &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; primul pătrat concentric, nivelul &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; al doilea pătrat concentric şi aşa mai departe). Intensitatea slăbeşte la fiecare pătrat concentric cu centrul seismului cu câte o unitate. Clădirile sunt afectate de cutremur doar dacă gradul lor de rezistenţă la cutremur este mai mic sau egal cu intensitatea cutremurului în poziţia clădirii.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Scrieţi un program care să citească coordonatele centrului seismului şi intensitatea sa în acel punct, precum şi coordonatele clădirilor şi gradul lor de rezistenţă la cutremur, şi apoi să determine:&lt;br /&gt;
&lt;br /&gt;
a) numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; total de clădiri afectate;&lt;br /&gt;
&lt;br /&gt;
b) numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; maxim de clădiri afectate pe un nivel;&lt;br /&gt;
&lt;br /&gt;
c) numerele nivelelor cu &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; clădiri afectate, în ordinea crescătoare a numerelor acestor nivele.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;cladiri1.in&amp;lt;/code&amp;gt; conține:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie, trei numere naturale &amp;lt;code&amp;gt;Long Lat Intensitate&amp;lt;/code&amp;gt;, separate prin câte un spaţiu, reprezentând coordonatele centrului seismului şi respectiv intensitatea sa;&lt;br /&gt;
* pe fiecare dintre următoarele linii, până la sfârşitul fişierului, câte &amp;lt;code&amp;gt;trei&amp;lt;/code&amp;gt; numere naturale  &amp;lt;code&amp;gt;Long Lat Grad&amp;lt;/code&amp;gt;,  separate prin câte un spaţiu, reprezentând coordonatele unei clădiri, respectiv gradul de rezistenţă la cutremur.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;cladiri1.out&amp;lt;/code&amp;gt; va conține trei linii:&lt;br /&gt;
&lt;br /&gt;
* pe prima linie se va scrie numărul natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; reprezentând numărul total de clădiri afectate;&lt;br /&gt;
* pe a doua linie se va scrie numărul natural &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; reprezentând numărul maxim de clădiri afectate pe un nivel;&lt;br /&gt;
* pe a treia linie se vor scrie numerele nivelelor cu &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; clădiri afectate, în ordinea crescătoare a numerelor acestor nivele.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ Long, Lat, Grad, Intensitate ≤ 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 &amp;lt;&amp;lt;/code&amp;gt;  număr clădiri &amp;lt;code&amp;gt;≤ 100000&amp;lt;/code&amp;gt;&lt;br /&gt;
* în centrul seismului se pot afla clădiri;&lt;br /&gt;
* nu există mai multe clădiri cu aceleaşi coordonate;&lt;br /&gt;
&lt;br /&gt;
= Exemplu =&lt;br /&gt;
&amp;lt;code&amp;gt;cladiri1.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 12 7 11&lt;br /&gt;
 10 9 2&lt;br /&gt;
 10 7 3&lt;br /&gt;
 13 5 1&lt;br /&gt;
 8 11 4&lt;br /&gt;
 8 7 6&lt;br /&gt;
 15 4 3&lt;br /&gt;
 15 9 10&lt;br /&gt;
 13 10 1&lt;br /&gt;
 16 8 4&lt;br /&gt;
&amp;lt;code&amp;gt;cladiri1.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 8&lt;br /&gt;
 3&lt;br /&gt;
 2 4&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
Numărul &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; total al clădirilor afectate este &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Numărul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; maxim de clădiri afectate pe acelaşi nivel este &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; şi este atins pe nivelele &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;4&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;
# Initialize the arrays with zeros&lt;br /&gt;
a = [0] * 10001&lt;br /&gt;
b = [0] * 10001&lt;br /&gt;
&lt;br /&gt;
# Open the input file&lt;br /&gt;
with open(&amp;#039;cladiri1.in&amp;#039;, &amp;#039;r&amp;#039;) as f:&lt;br /&gt;
    cx, cy, g = map(int, f.readline().split())&lt;br /&gt;
    nr = 0&lt;br /&gt;
&lt;br /&gt;
    # Process each line in the file&lt;br /&gt;
    for line in f:&lt;br /&gt;
        x, y, rez = map(int, line.split())&lt;br /&gt;
        max_dist = max(abs(cx - x), abs(cy - y))&lt;br /&gt;
        if g - max_dist &amp;gt; 0 and rez - (g - max_dist) &amp;lt;= 0:&lt;br /&gt;
            nr += 1&lt;br /&gt;
            a[max_dist] += 1&lt;br /&gt;
&lt;br /&gt;
# Find the maximum value and its indices&lt;br /&gt;
max_value = -1&lt;br /&gt;
k = 0&lt;br /&gt;
for i in range(10001):&lt;br /&gt;
    if max_value == a[i]:&lt;br /&gt;
        k += 1&lt;br /&gt;
        b[k] = i&lt;br /&gt;
    elif max_value &amp;lt; a[i]:&lt;br /&gt;
        max_value = a[i]&lt;br /&gt;
        k = 1&lt;br /&gt;
        b[k] = i&lt;br /&gt;
&lt;br /&gt;
# Open the output file&lt;br /&gt;
with open(&amp;#039;cladiri1.outtxt&amp;#039;, &amp;#039;w&amp;#039;) as ff:&lt;br /&gt;
    ff.write(str(nr) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
    ff.write(str(max_value) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
    if nr != 0:&lt;br /&gt;
        for i in range(1, k + 1):&lt;br /&gt;
            ff.write(str(b[i]) + &amp;#039; &amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Raul</name></author>
	</entry>
</feed>