<?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=3972_-_Wall</id>
	<title>3972 - Wall - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3972_-_Wall"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3972_-_Wall&amp;action=history"/>
	<updated>2026-05-01T06:57:48Z</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=3972_-_Wall&amp;diff=10203&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: = Cerința = Se dă un șir de &lt;code&gt;N&lt;/code&gt; numere întregi. Să se afle numărul de subsecvențe ale șirului pentru care diferența dintre elementul lor de valoare maximă și cel de valoare minimă este mai mică sau egală decât un număr întreg &lt;code&gt;T&lt;/code&gt; dat.  = Date de intrare = Programul citește de la tastatură numerele &lt;code&gt;N&lt;/code&gt; și &lt;code&gt;T&lt;/code&gt;, iar apoi &lt;code&gt;N&lt;/code&gt; numere întregi, separate prin spații.  = Date de ieșire = Programul va afișa...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3972_-_Wall&amp;diff=10203&amp;oldid=prev"/>
		<updated>2024-07-31T05:48:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: = Cerința = Se dă un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere întregi. Să se afle numărul de subsecvențe ale șirului pentru care diferența dintre elementul lor de valoare maximă și cel de valoare minimă este mai mică sau egală decât un număr întreg &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; dat.  = Date de intrare = Programul citește de la tastatură numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere întregi, separate prin spații.  = Date de ieșire = Programul va afișa...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Cerința =&lt;br /&gt;
Se dă un șir de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere întregi. Să se afle numărul de subsecvențe ale șirului pentru care diferența dintre elementul lor de valoare maximă și cel de valoare minimă este mai mică sau egală decât un număr întreg &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; dat.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numerele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere întregi, separate prin spații.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul de subsecvențe ale șirului dat care respectă condiția din enunț.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ N ≤ 1.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;0 ≤ T ≤ 2.000.000.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; numere citite vor fi din intervalul &amp;lt;code&amp;gt;[-1.000.000.000, 1.000.000.000]&amp;lt;/code&amp;gt;&lt;br /&gt;
* se numește subsecvență a unui șir o succesiune de elemente consecutive din acesta, considerate în ordinea în care apar în șir&lt;br /&gt;
* pentru teste în valoare de &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt; de puncte &amp;lt;code&amp;gt;N ≤ 10.000&amp;lt;/code&amp;gt;&lt;br /&gt;
* pentru teste în valoare de &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; de puncte &amp;lt;code&amp;gt;N ≤ 600.000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Intrare&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 5 2&lt;br /&gt;
 1 7 2 3 4&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ieșire&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 8&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cele &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; subsecvențe care respectă condiția din enunț sunt toate cele &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; care conțin un singur element(diferența dintre elementul maxim și cel minim fiind astfel &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), respectiv cele delimitate de perechile de indecși &amp;lt;code&amp;gt;[3, 4], [3, 5], [4, 5]&amp;lt;/code&amp;gt;(șirul se consideră a fi indexat de la &amp;lt;code&amp;gt;1&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;
from collections import deque&lt;br /&gt;
&lt;br /&gt;
def num_subsequences_with_condition(arr, N, T):&lt;br /&gt;
    min_deque = deque()&lt;br /&gt;
    max_deque = deque()&lt;br /&gt;
    start = 0&lt;br /&gt;
    count = 0&lt;br /&gt;
    &lt;br /&gt;
    for end in range(N):&lt;br /&gt;
        while min_deque and arr[min_deque[-1]] &amp;gt;= arr[end]:&lt;br /&gt;
            min_deque.pop()&lt;br /&gt;
        while max_deque and arr[max_deque[-1]] &amp;lt;= arr[end]:&lt;br /&gt;
            max_deque.pop()&lt;br /&gt;
        &lt;br /&gt;
        min_deque.append(end)&lt;br /&gt;
        max_deque.append(end)&lt;br /&gt;
        &lt;br /&gt;
        while arr[max_deque[0]] - arr[min_deque[0]] &amp;gt; T:&lt;br /&gt;
            start += 1&lt;br /&gt;
            if min_deque[0] &amp;lt; start:&lt;br /&gt;
                min_deque.popleft()&lt;br /&gt;
            if max_deque[0] &amp;lt; start:&lt;br /&gt;
                max_deque.popleft()&lt;br /&gt;
        &lt;br /&gt;
        count += (end - start + 1)&lt;br /&gt;
    &lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
N = int(input())&lt;br /&gt;
arr = list(map(int, input().split()))&lt;br /&gt;
T = int(input())&lt;br /&gt;
&lt;br /&gt;
# Calcularea și afișarea rezultatului&lt;br /&gt;
result = num_subsequences_with_condition(arr, N, T)&lt;br /&gt;
print(result)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RaulOtet</name></author>
	</entry>
</feed>