<?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=3059_-_Lexicografic</id>
	<title>3059 - Lexicografic - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3059_-_Lexicografic"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3059_-_Lexicografic&amp;action=history"/>
	<updated>2026-05-01T12:51:01Z</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=3059_-_Lexicografic&amp;diff=9979&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt ==  Se dă un șir v format din N elemente naturale nenule nu neapărat distincte. Asupra șirului putem aplica un singur tip de operație: interschimbarea a două elemente aflate pe poziții consecutive. == Cerinţa == Dându-se un număr natural K, se cere șirul minim lexicografic ce se poate obține prin aplicarea a cel mult K interschimbări de elemente de pe poziții consecutive. == Date de intrare == În fișierul lexicografic.in se află pe prima linie T, rep...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3059_-_Lexicografic&amp;diff=9979&amp;oldid=prev"/>
		<updated>2024-06-03T16:00:40Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt ==  Se dă un șir v format din N elemente naturale nenule nu neapărat distincte. Asupra șirului putem aplica un singur tip de operație: interschimbarea a două elemente aflate pe poziții consecutive. == Cerinţa == Dându-se un număr natural K, se cere șirul minim lexicografic ce se poate obține prin aplicarea a cel mult K interschimbări de elemente de pe poziții consecutive. == Date de intrare == În fișierul lexicografic.in se află pe prima linie T, rep...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
&lt;br /&gt;
Se dă un șir v format din N elemente naturale nenule nu neapărat distincte. Asupra șirului putem aplica un singur tip de operație: interschimbarea a două elemente aflate pe poziții consecutive.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dându-se un număr natural K, se cere șirul minim lexicografic ce se poate obține prin aplicarea a cel mult K interschimbări de elemente de pe poziții consecutive.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul lexicografic.in se află pe prima linie T, reprezentând numărul de teste. Urmează cele T teste, fiecare pe câte două linii. Pe prima linie din cadrul unui test se află două numere N și K separate prin spațiu. Pe linia a doua din cadrul unui test se află cele N elemente ale șirului v separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fișierul lexicografic.out se vor afișa cele T linii, câte una corespunzătoare răspunsului pe fiecare test. Linia corespunzătoare unui test va conține cele N elemente separate prin spații ale șirului minim lexicografic ce s-a obținut din șirul inițial, după aplicarea a cel mult K interschimbări de elemente de pe poziții consecutive.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N ≤ 250.000;&lt;br /&gt;
* T ≤ 2500;&lt;br /&gt;
* într-un fișier de intrare suma totală a lungimilor șirurilor corespunzătoare celor T teste nu va depăși 250.000;&lt;br /&gt;
* 1 ≤ K ≤ N*(N-1)/2;&lt;br /&gt;
* 1 ≤ v[i] ≤ N, pentru 1 ≤ i ≤ N;&lt;br /&gt;
* Vă rugăm să acordați atenție tipului de date necesar pentru a citi valoarea lui K;&lt;br /&gt;
* Pentru acordarea punctajului pe un fișier de test este necesară rezolvarea corectă a tuturor celor T teste;&lt;br /&gt;
* Pentru teste în valoare de 5 puncte se garantează K = N * (N – 1) / 2;&lt;br /&gt;
* Pentru alte teste în valoare de 7 puncte se garantează K = 1;&lt;br /&gt;
* Pentru alte teste în valoare de 23 de puncte se garantează T ≤ 10, N ≤ 50;&lt;br /&gt;
* Pentru alte teste în valoare de 4 puncte se garantează T ≤ 10, N ≤ 100;&lt;br /&gt;
* Pentru alte teste în valoare de 12 puncte se garantează T ≤ 10, N ≤ 500;&lt;br /&gt;
* Pentru alte teste în valoare de 24 de puncte se garantează T ≤ 10, N ≤ 2000;&lt;br /&gt;
* Un șir a1, a2, …, an este mai mic lexicografic decât un alt șir b1, b2, …, bn dacă există un număr întreg P mai mic sau egal cu N astfel * încât: a1 = b1, a2 = b2, … , aP-1 = bP-1, iar aP &amp;lt; bP.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; lexicografic.in&lt;br /&gt;
 3&lt;br /&gt;
 5 2&lt;br /&gt;
 4 2 3 1 1&lt;br /&gt;
 4 3&lt;br /&gt;
 2 1 3 4&lt;br /&gt;
 6 4&lt;br /&gt;
 5 3 5 3 4 6&lt;br /&gt;
; lexicografic.out&lt;br /&gt;
 2 3 4 1 1&lt;br /&gt;
 1 2 3 4&lt;br /&gt;
 3 3 5 4 5 6&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru primul test: Șirul este format din N = 5 elemente, și anume v=(4,2,3,1,1). Putem efectua K=2 interschimbări. Interschimbând elementele v[1] și v[2] obținem șirul (2,4,3,1,1), apoi după interschimbarea elementelor v[3] și v[2] se obține șirul minim lexicografic (2,3,4,1,1).&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def min_lexicographic_sequence(N, K, v):&lt;br /&gt;
    for _ in range(min(K, N)):&lt;br /&gt;
        for i in range(N - 1):&lt;br /&gt;
            if v[i] &amp;gt; v[i + 1]:&lt;br /&gt;
                v[i], v[i + 1] = v[i + 1], v[i]&lt;br /&gt;
    &lt;br /&gt;
    return v&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;lexicografic.in&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;lexicografic.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        T = int(fin.readline())&lt;br /&gt;
        for _ in range(T):&lt;br /&gt;
            N, K = map(int, fin.readline().split())&lt;br /&gt;
            v = list(map(int, fin.readline().split()))&lt;br /&gt;
            min_lex_seq = min_lexicographic_sequence(N, K, v)&lt;br /&gt;
            fout.write(&amp;quot; &amp;quot;.join(map(str, min_lex_seq)) + &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>