<?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=3732_-_Seism</id>
	<title>3732 - Seism - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3732_-_Seism"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3732_-_Seism&amp;action=history"/>
	<updated>2026-05-01T14:22:07Z</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=3732_-_Seism&amp;diff=10167&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: Cercetătorii de la NASA au instalat pe Marte un seismograf cu ajutorul căruia s-au înregistrat mișcările la nivelul solului planetei. Seismograful a trimis în fiecare din cele &lt;code&gt;N&lt;/code&gt; secunde ce definesc perioada de timp analizată, câte un semnal pe Pământ ce a fost codificat de cercetători cu valoarea &lt;code&gt;1&lt;/code&gt;, dacă seismograful a detectat mișcare și &lt;code&gt;0&lt;/code&gt;, în cazul în care nu s-a înregistrat mișcare la nivelul solului planetei. Astfel...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3732_-_Seism&amp;diff=10167&amp;oldid=prev"/>
		<updated>2024-07-23T11:26:16Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Cercetătorii de la NASA au instalat pe Marte un seismograf cu ajutorul căruia s-au înregistrat mișcările la nivelul solului planetei. Seismograful a trimis în fiecare din cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; secunde ce definesc perioada de timp analizată, câte un semnal pe Pământ ce a fost codificat de cercetători cu valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, dacă seismograful a detectat mișcare și &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, în cazul în care nu s-a înregistrat mișcare la nivelul solului planetei. Astfel...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Cercetătorii de la NASA au instalat pe Marte un seismograf cu ajutorul căruia s-au înregistrat mișcările la nivelul solului planetei. Seismograful a trimis în fiecare din cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; secunde ce definesc perioada de timp analizată, câte un semnal pe Pământ ce a fost codificat de cercetători cu valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, dacă seismograful a detectat mișcare și &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, în cazul în care nu s-a înregistrat mișcare la nivelul solului planetei. Astfel, un seism de pe Marte a fost definit de cercetători ca fiind o perioadă continuă de timp în care seismograful a trimis, din secundă în secundă, câte un semnal codificat cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și care începe după cel puțin două semnale codificate cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, iar la sfârșitul ei sunt înregistrate cel puțin două semnale codificate cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Cunoscând șirul celor &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; valori transmise în ordine de seismograf, scrieți un program care să determine:&lt;br /&gt;
&lt;br /&gt;
1. Care a fost durata maximă, exprimată în secunde a unui seism;&lt;br /&gt;
&lt;br /&gt;
2. Câte seisme au avut loc în perioada de timp analizată;&lt;br /&gt;
&lt;br /&gt;
3. Din cauza unei erori tehnice, o perioadă continuă de timp seismograful a transmis eronat. Astfel, în șirul inițial format din cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; semnale, trebuie să înlocuim valoarea &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; cu valoarea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, într-o singură secvență, de lungime nevidă, de elemente nule alăturate. Analizând toate posibilitățile de a face această modificare, determinați durata maximă a unui seism care se obține după modificarea șirului inițial de semnale.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;seism.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; care poate avea valorile &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; sau &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; și reprezintă numărul cerinței. Pe cea de-a doua linie, un număr natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; având semnificația din enunț. Pe următoarea linie, &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere naturale despărțite prin câte un spațiu, reprezentând codificarea semnalului transmis de seismograf, din secundă în secundă, începând cu secunda &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și până la secunda &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;seism.out&amp;lt;/code&amp;gt; va conține pe prima linie un singur număr natural reprezentând rezultatul&lt;br /&gt;
&lt;br /&gt;
determinat conform cerinței.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5 ≤ N ≤ 100.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* Un seism durează între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;N - 4&amp;lt;/code&amp;gt; secunde&lt;br /&gt;
* Pentru cerințele &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; se garantează că seismograful a detectat cel puțin un seism.&lt;br /&gt;
* La cerința 3 se garantează că există cel puțin o secvență nevidă de elemente egale cu &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; ce pot fi schimbate în &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; pentru a avea cel puțin un seism în tot șirul.&lt;br /&gt;
* Pentru rezolvarea corectă a primei cerințe se obțin 40 de puncte, pentru rezolvarea corectă a celei de a doua cerințe se obțin 40 de puncte, iar pentru rezolvarea corectă a celei de a treia cerințe se obțin 20 de puncte.&lt;br /&gt;
&lt;br /&gt;
= Exemplu : =&lt;br /&gt;
&amp;lt;code&amp;gt;seism.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 1&lt;br /&gt;
 21&lt;br /&gt;
 0 0 1 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0&lt;br /&gt;
 0 1&lt;br /&gt;
&amp;lt;code&amp;gt;seism.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Durata maximă a unui seism este de &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; secunde.&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 analyze_seismic_data(signals):&lt;br /&gt;
    n = len(signals)&lt;br /&gt;
    &lt;br /&gt;
    # Durata maximă a unui seism și numărul total de seisme&lt;br /&gt;
    max_seism_duration = 0&lt;br /&gt;
    total_seisms = 0&lt;br /&gt;
    current_duration = 0&lt;br /&gt;
    in_seism = False&lt;br /&gt;
    &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if signals[i] == 1:&lt;br /&gt;
            if not in_seism and i &amp;gt;= 2 and signals[i-1] == 0 and signals[i-2] == 0:&lt;br /&gt;
                in_seism = True&lt;br /&gt;
                current_duration = 1&lt;br /&gt;
            elif in_seism:&lt;br /&gt;
                current_duration += 1&lt;br /&gt;
        else:&lt;br /&gt;
            if in_seism:&lt;br /&gt;
                if i+1 &amp;lt; n and signals[i+1] == 0:&lt;br /&gt;
                    total_seisms += 1&lt;br /&gt;
                    max_seism_duration = max(max_seism_duration, current_duration)&lt;br /&gt;
                    in_seism = False&lt;br /&gt;
                    current_duration = 0&lt;br /&gt;
    &lt;br /&gt;
    if in_seism:&lt;br /&gt;
        if n &amp;gt;= 2 and signals[n-1] == 0 and signals[n-2] == 0:&lt;br /&gt;
            total_seisms += 1&lt;br /&gt;
            max_seism_duration = max(max_seism_duration, current_duration)&lt;br /&gt;
    &lt;br /&gt;
    # Durata maximă a unui seism după modificare&lt;br /&gt;
    max_seism_after_modification = 0&lt;br /&gt;
    &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        if signals[i] == 0:&lt;br /&gt;
            modified_signals = signals[:i] + [1] * (n - i)&lt;br /&gt;
            current_duration = 0&lt;br /&gt;
            max_duration = 0&lt;br /&gt;
            in_seism = False&lt;br /&gt;
            &lt;br /&gt;
            for j in range(n):&lt;br /&gt;
                if modified_signals[j] == 1:&lt;br /&gt;
                    if not in_seism and j &amp;gt;= 2 and modified_signals[j-1] == 0 and modified_signals[j-2] == 0:&lt;br /&gt;
                        in_seism = True&lt;br /&gt;
                        current_duration = 1&lt;br /&gt;
                    elif in_seism:&lt;br /&gt;
                        current_duration += 1&lt;br /&gt;
                else:&lt;br /&gt;
                    if in_seism:&lt;br /&gt;
                        if j+1 &amp;lt; n and modified_signals[j+1] == 0:&lt;br /&gt;
                            max_duration = max(max_duration, current_duration)&lt;br /&gt;
                            in_seism = False&lt;br /&gt;
                            current_duration = 0&lt;br /&gt;
            &lt;br /&gt;
            if in_seism:&lt;br /&gt;
                if n &amp;gt;= 2 and modified_signals[n-1] == 0 and modified_signals[n-2] == 0:&lt;br /&gt;
                    max_duration = max(max_duration, current_duration)&lt;br /&gt;
            &lt;br /&gt;
            max_seism_after_modification = max(max_seism_after_modification, max_duration)&lt;br /&gt;
    &lt;br /&gt;
    return max_seism_duration, total_seisms, max_seism_after_modification&lt;br /&gt;
&lt;br /&gt;
# Exemplu de utilizare&lt;br /&gt;
signals = [0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0]&lt;br /&gt;
max_seism_duration, total_seisms, max_seism_after_modification = analyze_seismic_data(signals)&lt;br /&gt;
print(&amp;quot;Durata maximă a unui seism:&amp;quot;, max_seism_duration)&lt;br /&gt;
print(&amp;quot;Numărul total de seisme:&amp;quot;, total_seisms)&lt;br /&gt;
print(&amp;quot;Durata maximă a unui seism după modificare:&amp;quot;, max_seism_after_modification)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RaulOtet</name></author>
	</entry>
</feed>