<?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=3820_-_Mordor_Trip</id>
	<title>3820 - Mordor Trip - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3820_-_Mordor_Trip"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3820_-_Mordor_Trip&amp;action=history"/>
	<updated>2026-05-01T06:51: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=3820_-_Mordor_Trip&amp;diff=10049&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Cerinţa == Dr. Le Quack , fiind un mare fan al Lord Of The Rings , decide să plece în Mordor , locul unde a fost făurit inelul atotputernic . Când acesta ajunge la turnul lui Sauron , observă că intrarea are un cifru . Cifrul este un șir de numere întregi. Dr. Le Quack poate aplică următorul algoritm șirului :    for(int i=1;i&lt;n;i++){       if(a[i]&lt;=a[i+1]){           swap(a[i], a[i+1]);       }   } Dr. Le Quack poate aplica acest tip de operatie de un număr n...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3820_-_Mordor_Trip&amp;diff=10049&amp;oldid=prev"/>
		<updated>2024-06-03T17:36:16Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Dr. Le Quack , fiind un mare fan al Lord Of The Rings , decide să plece în Mordor , locul unde a fost făurit inelul atotputernic . Când acesta ajunge la turnul lui Sauron , observă că intrarea are un cifru . Cifrul este un șir de numere întregi. Dr. Le Quack poate aplică următorul algoritm șirului :    for(int i=1;i&amp;lt;n;i++){       if(a[i]&amp;lt;=a[i+1]){           swap(a[i], a[i+1]);       }   } Dr. Le Quack poate aplica acest tip de operatie de un număr n...&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;
Dr. Le Quack , fiind un mare fan al Lord Of The Rings , decide să plece în Mordor , locul unde a fost făurit inelul atotputernic . Când acesta ajunge la turnul lui Sauron , observă că intrarea are un cifru . Cifrul este un șir de numere întregi. Dr. Le Quack poate aplică următorul algoritm șirului :&lt;br /&gt;
&lt;br /&gt;
  for(int i=1;i&amp;lt;n;i++){&lt;br /&gt;
      if(a[i]&amp;lt;=a[i+1]){&lt;br /&gt;
          swap(a[i], a[i+1]);&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
Dr. Le Quack poate aplica acest tip de operatie de un număr nelimitat de ori ( posibil 0 ). Intrarea se va deschide atunci când șirul va fi unul descrescator. Un șir este descrescător dacă pentru fiecare i din intervalul [1 , n-1] se respectă condiția a[i] ≥ a[i+1]. Dr. Le Quack fiind lacom vrea să stie care este numărul minim operații pentru a deschide intrarea. Pentru că acesta a chiulit de la orele de informatică uitat cum se rezolvă problemele de natură algoritmica , vă roaga sa îl ajutați în schimbul a 100 de puncte și asigurare medicală la cabinetul său.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare mordortrip.in conține pe prima linie numărul n, iar pe a doua linie n numere întregi separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire mordortrip.out conține pe prima linie un număr ans reprezentând numărul minim de operații ale&lt;br /&gt;
algoritmului specificat mai sus pentru a sorta vectorul dat la input într-unul descrescător.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Numerele sunt întregi , din intervalul [ -1.000.000.000 , 1.000.000.000 ] , NU neapărat distincte.&lt;br /&gt;
* Se garantează că avem mereu soluție dintr-un număr finit de operații ale algoritmului descris.&lt;br /&gt;
* Pentru teste în valoare de 20 de puncte , N ≤ 5.000.&lt;br /&gt;
* Pentru restul testelor , N ≤ 1.000.000.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; mordortrip.in&lt;br /&gt;
&lt;br /&gt;
  5&lt;br /&gt;
  5 1 3 2 4&lt;br /&gt;
; mordortrip.out&lt;br /&gt;
&lt;br /&gt;
  3&lt;br /&gt;
; mordortrip.in&lt;br /&gt;
&lt;br /&gt;
  4&lt;br /&gt;
  3 1 2 2&lt;br /&gt;
; mordortrip.out&lt;br /&gt;
&lt;br /&gt;
 1&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În primul exemplu , sunt necesare doar 3 aplicări ale algoritmului : 1 – 5 3 2 4 1 ; 2 – 5 3 4 2 1 ; 3 – 5 4 3 2 1&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def minimum_operations(n, arr):&lt;br /&gt;
    operations = 0&lt;br /&gt;
    &lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        if arr[i] &amp;lt;= arr[i-1]:&lt;br /&gt;
            operations += arr[i-1] - arr[i] + 1&lt;br /&gt;
            arr[i] = arr[i-1] + 1&lt;br /&gt;
    &lt;br /&gt;
    return operations&lt;br /&gt;
&lt;br /&gt;
def read_input(file_name):&lt;br /&gt;
    with open(file_name, &amp;#039;r&amp;#039;) as file:&lt;br /&gt;
        n = int(file.readline().strip())&lt;br /&gt;
        arr = list(map(int, file.readline().strip().split()))&lt;br /&gt;
    return n, arr&lt;br /&gt;
&lt;br /&gt;
def write_output(file_name, result):&lt;br /&gt;
    with open(file_name, &amp;#039;w&amp;#039;) as file:&lt;br /&gt;
        file.write(str(result))&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n, arr = read_input(&amp;quot;mordortrip.in&amp;quot;)&lt;br /&gt;
    result = minimum_operations(n, arr)&lt;br /&gt;
    write_output(&amp;quot;mordortrip.out&amp;quot;, result)&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>RebecaBud</name></author>
	</entry>
</feed>