<?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=4019_-_Pikachu</id>
	<title>4019 - Pikachu - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4019_-_Pikachu"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4019_-_Pikachu&amp;action=history"/>
	<updated>2026-06-17T07:12:32Z</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=4019_-_Pikachu&amp;diff=9977&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Miruna şi partenerul ei de aventură, Pikachu, sunt în faţa unei noi provocări. Cele două personaje au ajuns lângă un lanţ muntos format din N vârfuri aşezate în linie dreaptă unul după altul. Pentru fiecare vârf muntos se cunoaşte înălţimea lui. Folosindu-se de puterile sale extraordinare, Pikachu este capabil sa scadă sau să crească înălţimea unui vârf muntos cu o unitate într-o secundă. Din motive necunoscute muritorilor de rând, cei...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4019_-_Pikachu&amp;diff=9977&amp;oldid=prev"/>
		<updated>2024-06-03T15:57:52Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Miruna şi partenerul ei de aventură, Pikachu, sunt în faţa unei noi provocări. Cele două personaje au ajuns lângă un lanţ muntos format din N vârfuri aşezate în linie dreaptă unul după altul. Pentru fiecare vârf muntos se cunoaşte înălţimea lui. Folosindu-se de puterile sale extraordinare, Pikachu este capabil sa scadă sau să crească înălţimea unui vârf muntos cu o unitate într-o secundă. Din motive necunoscute muritorilor de rând, cei...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Miruna şi partenerul ei de aventură, Pikachu, sunt în faţa unei noi provocări. Cele două personaje au ajuns lângă un lanţ muntos format din N vârfuri aşezate în linie dreaptă unul după altul. Pentru fiecare vârf muntos se cunoaşte înălţimea lui. Folosindu-se de puterile sale extraordinare, Pikachu este capabil sa scadă sau să crească înălţimea unui vârf muntos cu o unitate într-o secundă. Din motive necunoscute muritorilor de rând, cei doi prieteni vor să obţină cel puţin K vârfuri montane consecutive care au aceeaşi înălţime, într-un timp cât mai scurt.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Determinaţi timpul minim în care Pikachu poate îndeplini această sarcină.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare pikachu.in conține pe prima linie două numere N şi K având semnificaţia din enunţ. Pe cea de a doua linie se vor găsi N numere naturale reprezentând înălţimile vârfurilor muntoase.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire pikachu.out va conţine un singur număr natural T, reprezentând timpul minim necesar pentru a obţine cel puţin K vârfuri consecutive cu aceeaşi înălţime.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N ≤ 100.000&lt;br /&gt;
* 1 ≤ K ≤ N&lt;br /&gt;
* Înălţimile munţilor sunt numere pozitive care se pot reprezenta pe întregi de 32 de biţi cu semn&lt;br /&gt;
* 20% din teste au 1 ≤ N, K ≤ 100, iar înălţimile aparţin intervalului [1, 100]&lt;br /&gt;
* Alte 20% din teste au 1 ≤ N, K ≤ 5000&lt;br /&gt;
* Rezultatul se poate reprezenta pe un întreg de 64 biţi cu semn&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; pikachu.in&lt;br /&gt;
 5 3&lt;br /&gt;
 5 2 4 3 7&lt;br /&gt;
; pikachu.out&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În prima secundă se creşte înălţimea muntelui de pe poziţia a doua, iar în a doua secundă se scade înălţimea muntelui de pe poziţia a treia. În urma acestor operaţii subsevenţa care începe pe a doua poziţie şi se termină pe a patra poziţie va conţine doar vârfuri de înălţime 3.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def min_time_to_consecutive_height(N, K, heights):&lt;br /&gt;
    min_time = float(&amp;#039;inf&amp;#039;)&lt;br /&gt;
    counter = {}&lt;br /&gt;
    start, end = 0, 0&lt;br /&gt;
    &lt;br /&gt;
    while end &amp;lt; N:&lt;br /&gt;
        height = heights[end]&lt;br /&gt;
        counter[height] = counter.get(height, 0) + 1&lt;br /&gt;
        end += 1&lt;br /&gt;
        &lt;br /&gt;
        while len(counter) &amp;gt; 1 or (len(counter) == 1 and max(counter.values()) &amp;lt; K):&lt;br /&gt;
            start_height = heights[start]&lt;br /&gt;
            counter[start_height] -= 1&lt;br /&gt;
            if counter[start_height] == 0:&lt;br /&gt;
                del counter[start_height]&lt;br /&gt;
            start += 1&lt;br /&gt;
        &lt;br /&gt;
        if len(counter) == 1 and max(counter.values()) &amp;gt;= K:&lt;br /&gt;
            min_time = min(min_time, end - start)&lt;br /&gt;
    &lt;br /&gt;
    return min_time&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;pikachu.in&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;pikachu.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        N, K = map(int, fin.readline().split())&lt;br /&gt;
        heights = list(map(int, fin.readline().split()))&lt;br /&gt;
        min_time = min_time_to_consecutive_height(N, K, heights)&lt;br /&gt;
        fout.write(str(min_time) + &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>