<?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=1692_-_Calafat</id>
	<title>1692 - Calafat - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1692_-_Calafat"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1692_-_Calafat&amp;action=history"/>
	<updated>2026-05-02T03:27:20Z</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=1692_-_Calafat&amp;diff=10013&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Această problemă se numește Calafat pentru că a fost compusă în timpul excursiei la Calafat de mâine. == Cerinţa == Se dă un șir format din N numere naturale. Pentru fiecare valoare distinctă dintr-o subsecvență cuprinsă între doi indici st si dr considerăm distanța dintre indicii primei și ultimei apariții ale acesteia în cadrul subsecvenței. Dându-se M subsecvențe de forma [st, dr], se cere să se calculeze suma distanțelor corespunzătoa...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1692_-_Calafat&amp;diff=10013&amp;oldid=prev"/>
		<updated>2024-06-03T16:48:28Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Această problemă se numește Calafat pentru că a fost compusă în timpul excursiei la Calafat de mâine. == Cerinţa == Se dă un șir format din N numere naturale. Pentru fiecare valoare distinctă dintr-o subsecvență cuprinsă între doi indici st si dr considerăm distanța dintre indicii primei și ultimei apariții ale acesteia în cadrul subsecvenței. Dându-se M subsecvențe de forma [st, dr], se cere să se calculeze suma distanțelor corespunzătoa...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Această problemă se numește Calafat pentru că a fost compusă în timpul excursiei la Calafat de mâine.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă un șir format din N numere naturale. Pentru fiecare valoare distinctă dintr-o subsecvență cuprinsă între doi indici st si dr considerăm distanța dintre indicii primei și ultimei apariții ale acesteia în cadrul subsecvenței. Dându-se M subsecvențe de forma [st, dr], se cere să se calculeze suma distanțelor corespunzătoare tuturor valorilor distincte din subsecvență.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare calafat.in conține pe prima linie două numere natural N și M. Pe a doua linie se vor afla cele N numere din șirul dat. Pe următoarele M linii se vor afla câte două numere st și dr, cu semnificația că vrem să calculăm suma menționată mai sus pentru subsecvența [st,dr].&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire calafat.out va conține M numere naturale, câte unul pe fiecare linie, reprezentând cele M sume cerute.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N, M ≤ 200000&lt;br /&gt;
* 1 ≤ st ≤ dr ≤ N&lt;br /&gt;
* Valorile din șir se vor afla în intervalul [1, N]&lt;br /&gt;
* Pentru 20% din teste se garantează că N, M ≤ 1000&lt;br /&gt;
* Pentru alte 25% din teste se garantează că N, M ≤ 35 000 iar numărul de elemente distincte din șir este maxim 100.&lt;br /&gt;
* Pentru alte 25% din teste se garantează că N, M ≤ 70 000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; calafat.in&lt;br /&gt;
 7 3&lt;br /&gt;
 1 3 1 2 2 1 3&lt;br /&gt;
 2 4&lt;br /&gt;
 2 7&lt;br /&gt;
 3 6&lt;br /&gt;
; calafat.out&lt;br /&gt;
 0&lt;br /&gt;
 9&lt;br /&gt;
 4&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În prima subsecvență fiecare valoare apare o singură dată, deci suma diferențelor este 0.&lt;br /&gt;
&lt;br /&gt;
În a doua subsecvență:&lt;br /&gt;
&lt;br /&gt;
* Valoarea 3 apare la indicii 2 și 7 rezultând diferența 7-2=5&lt;br /&gt;
* Valoarea 1 apare la indicii 3 și 6 =&amp;gt; diferența 6–3=3&lt;br /&gt;
* Valoarea 2 apare la indicii 4 și 5 =&amp;gt; diferența 5-4=1&lt;br /&gt;
Suma diferențelor este 9.&lt;br /&gt;
&lt;br /&gt;
În a treia subsecvență:&lt;br /&gt;
&lt;br /&gt;
* Valoarea 1 apare la indicii 3 și 6 =&amp;gt; diferența 6–3=3&lt;br /&gt;
* Valoarea 2 apare la indicii 4 și 5 =&amp;gt; diferența 5-4=1&lt;br /&gt;
Suma diferențelor este 4.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;calafat.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        N, M = map(int, fin.readline().split())&lt;br /&gt;
        sequence = list(map(int, fin.readline().split()))&lt;br /&gt;
        queries = [tuple(map(int, line.split())) for line in fin.readlines()]&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;calafat.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        for query in queries:&lt;br /&gt;
            st, dr = query&lt;br /&gt;
            subsequence = sequence[st-1:dr]&lt;br /&gt;
            distinct_values = set(subsequence)&lt;br /&gt;
            result = calculate_distances(subsequence, distinct_values)&lt;br /&gt;
            fout.write(str(result) + &amp;quot;\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;/div&gt;</summary>
		<author><name>AjM</name></author>
	</entry>
</feed>