<?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=0870_-_Depou</id>
	<title>0870 - Depou - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0870_-_Depou"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0870_-_Depou&amp;action=history"/>
	<updated>2026-05-01T03:41:30Z</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=0870_-_Depou&amp;diff=10070&amp;oldid=prev</id>
		<title>Danciu: Pagină nouă:  = Cerința = Se consideră un depou de cale ferată precum cel din imagine:  Pe linia &lt;code&gt;A&lt;/code&gt; se află &lt;code&gt;n&lt;/code&gt; vagoane, numerotate cu valori distincte de la &lt;code&gt;1&lt;/code&gt; la &lt;code&gt;n&lt;/code&gt;, într-o ordine oarecare. Vagoanele trebuie mutate pe linia &lt;code&gt;C&lt;/code&gt;, în ordinea &lt;code&gt;1 2 .. n&lt;/code&gt;. Pentru aceasta se poate muta câte un vagon de pe o linie pe alta, în ordinea indicată de săgeți:  * &lt;code&gt;A -&gt; B&lt;/code&gt;, * &lt;code&gt;A -&gt; C&lt;/code&gt; * &lt;code&gt;B -&gt; C&lt;/...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0870_-_Depou&amp;diff=10070&amp;oldid=prev"/>
		<updated>2024-06-03T23:00:59Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă:  = Cerința = Se consideră un depou de cale ferată precum cel din imagine:  Pe linia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; se află &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vagoane, numerotate cu valori distincte de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, într-o ordine oarecare. Vagoanele trebuie mutate pe linia &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, în ordinea &amp;lt;code&amp;gt;1 2 .. n&amp;lt;/code&amp;gt;. Pentru aceasta se poate muta câte un vagon de pe o linie pe alta, în ordinea indicată de săgeți:  * &amp;lt;code&amp;gt;A -&amp;gt; B&amp;lt;/code&amp;gt;, * &amp;lt;code&amp;gt;A -&amp;gt; C&amp;lt;/code&amp;gt; * &amp;lt;code&amp;gt;B -&amp;gt; C&amp;lt;/...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Cerința =&lt;br /&gt;
Se consideră un depou de cale ferată precum cel din imagine:&lt;br /&gt;
&lt;br /&gt;
Pe linia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; se află &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; vagoane, numerotate cu valori distincte de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, într-o ordine oarecare. Vagoanele trebuie mutate pe linia &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, în ordinea &amp;lt;code&amp;gt;1 2 .. n&amp;lt;/code&amp;gt;. Pentru aceasta se poate muta câte un vagon de pe o linie pe alta, în ordinea indicată de săgeți:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;A -&amp;gt; B&amp;lt;/code&amp;gt;,&lt;br /&gt;
* &amp;lt;code&amp;gt;A -&amp;gt; C&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;B -&amp;gt; C&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Să se determine o succesiune de operații care să mute toate vagoanele de pe linia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; pe linia &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; în ordinea dorită.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură numărul &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, iar apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere naturale distincte cuprinse între &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, reprezentând ordinea vagoanelor de pe linia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe ecran numărul &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; de operații efectuate, apoi cele &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; operații. Fiecare operație va fi afișată pe câte o linie a ecranului, și va consta din două caractere de forma &amp;lt;code&amp;gt;X Y&amp;lt;/code&amp;gt;, semnificând faptul că se mută un vagon de pe linia &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; pe linia &amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;. Dacă nu este posibilă mutarea vagoanelor de pe linia &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; pe linia &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, numărul de operații afișat va fi &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
Intrare&lt;br /&gt;
 4&lt;br /&gt;
 2 1 3 4&lt;br /&gt;
Ieșire&lt;br /&gt;
 6&lt;br /&gt;
 A B&lt;br /&gt;
 A B&lt;br /&gt;
 A C&lt;br /&gt;
 A C&lt;br /&gt;
 B C&lt;br /&gt;
 B C&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
Ordinea inițială a vagoanelor este următoarea:&lt;br /&gt;
&lt;br /&gt;
După mutarea vagoanele vor fi în ordinea:&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    a = [0] * 1001&lt;br /&gt;
    d = [[0] * 3 for _ in range(2001)]&lt;br /&gt;
    b = [0] * 1001&lt;br /&gt;
&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    a[1:n + 1] = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
    vf = 0&lt;br /&gt;
    vagon = 1&lt;br /&gt;
    op = 0&lt;br /&gt;
    ok = 1&lt;br /&gt;
    i = n&lt;br /&gt;
&lt;br /&gt;
    while vagon &amp;lt;= n and ok == 1:&lt;br /&gt;
        if vagon == a[i]:&lt;br /&gt;
            op += 1&lt;br /&gt;
            vagon += 1&lt;br /&gt;
            i -= 1&lt;br /&gt;
            d[op][0] = 1&lt;br /&gt;
            d[op][1] = 3&lt;br /&gt;
        elif vf &amp;gt; 0 and b[vf] == vagon:&lt;br /&gt;
            op += 1&lt;br /&gt;
            vagon += 1&lt;br /&gt;
            vf -= 1&lt;br /&gt;
            d[op][0] = 2&lt;br /&gt;
            d[op][1] = 3&lt;br /&gt;
        elif i &amp;gt;= 1:&lt;br /&gt;
            op += 1&lt;br /&gt;
            d[op][0] = 1&lt;br /&gt;
            d[op][1] = 2&lt;br /&gt;
            vf += 1&lt;br /&gt;
            b[vf] = a[i]&lt;br /&gt;
            i -= 1&lt;br /&gt;
        elif vagon &amp;gt;= 1 and i == 0 and vf &amp;gt; 0:&lt;br /&gt;
            ok = 0&lt;br /&gt;
&lt;br /&gt;
    if ok == 0:&lt;br /&gt;
        print(0)&lt;br /&gt;
    else:&lt;br /&gt;
        print(op)&lt;br /&gt;
        for i in range(1, op + 1):&lt;br /&gt;
            if d[i][0] == 1:&lt;br /&gt;
                print(&amp;quot;A&amp;quot;, end=&amp;quot; &amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;B&amp;quot;, end=&amp;quot; &amp;quot;)&lt;br /&gt;
            if d[i][1] == 2:&lt;br /&gt;
                print(&amp;quot;B&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                print(&amp;quot;C&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>Danciu</name></author>
	</entry>
</feed>