<?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=2683_-_Easy_ssc</id>
	<title>2683 - Easy ssc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2683_-_Easy_ssc"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2683_-_Easy_ssc&amp;action=history"/>
	<updated>2026-05-01T04:39:27Z</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=2683_-_Easy_ssc&amp;diff=8957&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: Se dă un șir de &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul &#039;&#039;&#039;4 6 2 5 8 1 3 7&#039;&#039;&#039; poate fi partiționat astfel: &#039;&#039;&#039;4 6 8&#039;&#039;&#039; (primul subșir), &#039;&#039;&#039;2 5 7&#039;&#039;&#039; (al doilea) și &#039;&#039;&#039;1 3&#039;&#039;&#039; (al treilea). O altă modalitate este formând patru subșiruri: &#039;&#039;&#039;4 5 7&#039;&#039;&#039;, &#039;&#039;&#039;6 8&#039;&#039;&#039;, &#039;&#039;&#039;2 3&#039;&#039;&#039; și &#039;&#039;&#039;1&#039;&#039;&#039;. == Cerinţa == Să se determine numărul minim de subșiruri strict crescătoare în...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2683_-_Easy_ssc&amp;diff=8957&amp;oldid=prev"/>
		<updated>2024-01-04T10:07:09Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se dă un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul &amp;#039;&amp;#039;&amp;#039;4 6 2 5 8 1 3 7&amp;#039;&amp;#039;&amp;#039; poate fi partiționat astfel: &amp;#039;&amp;#039;&amp;#039;4 6 8&amp;#039;&amp;#039;&amp;#039; (primul subșir), &amp;#039;&amp;#039;&amp;#039;2 5 7&amp;#039;&amp;#039;&amp;#039; (al doilea) și &amp;#039;&amp;#039;&amp;#039;1 3&amp;#039;&amp;#039;&amp;#039; (al treilea). O altă modalitate este formând patru subșiruri: &amp;#039;&amp;#039;&amp;#039;4 5 7&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;6 8&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2 3&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. == Cerinţa == Să se determine numărul minim de subșiruri strict crescătoare în...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se dă un șir de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul &amp;#039;&amp;#039;&amp;#039;4 6 2 5 8 1 3 7&amp;#039;&amp;#039;&amp;#039; poate fi partiționat astfel: &amp;#039;&amp;#039;&amp;#039;4 6 8&amp;#039;&amp;#039;&amp;#039; (primul subșir), &amp;#039;&amp;#039;&amp;#039;2 5 7&amp;#039;&amp;#039;&amp;#039; (al doilea) și &amp;#039;&amp;#039;&amp;#039;1 3&amp;#039;&amp;#039;&amp;#039; (al treilea). O altă modalitate este formând patru subșiruri: &amp;#039;&amp;#039;&amp;#039;4 5 7&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;6 8&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;2 3&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Să se determine numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi șirul de &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale, separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Programul va afișa pe ecran numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n &amp;amp;les; 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere citite vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;50.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Un subșir se obține dintr-un șir prin eliminarea a zero, unul, sau mai multe elemente.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 8&lt;br /&gt;
 4 6 2 5 8 1 3 7&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 3&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
 10001&lt;br /&gt;
 4 6 2 5 8 1 3 7&lt;br /&gt;
; Iesire&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
from bisect import bisect_left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numar_minim_subsecvente(n, sir):&lt;br /&gt;
    # Calculează numărul minim de subșiruri strict crescătoare în care se poate partiționa șirul.&lt;br /&gt;
&lt;br /&gt;
    subsecvente = [0] * n&lt;br /&gt;
    lungime = 1&lt;br /&gt;
&lt;br /&gt;
    # Primul element al sirului este întotdeauna o subsecvență în sine&lt;br /&gt;
    subsecvente[0] = sir[0]&lt;br /&gt;
&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        # Dacă elementul curent este mai mare decât ultimul element al subsecvenței curente,&lt;br /&gt;
        # îl adăugăm la sfârșitul subsecvenței și creștem lungimea acesteia&lt;br /&gt;
        if sir[i] &amp;gt; subsecvente[lungime - 1]:&lt;br /&gt;
            subsecvente[lungime] = sir[i]&lt;br /&gt;
            lungime += 1&lt;br /&gt;
        else:&lt;br /&gt;
            # Dacă elementul curent este mai mic sau egal cu ultimul element al subsecvenței curente,&lt;br /&gt;
            # înlocuim cel mai mare element care este mai mic sau egal cu elementul curent&lt;br /&gt;
            j = bisect_left(subsecvente, sir[i], 0, lungime)&lt;br /&gt;
            subsecvente[j] = sir[i]&lt;br /&gt;
&lt;br /&gt;
    return lungime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input().strip())&lt;br /&gt;
    sir = list(map(int, input().split()))&lt;br /&gt;
&lt;br /&gt;
    # Verifică dacă datele de intrare respectă restricțiile&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000 and all(0 &amp;lt;= x &amp;lt; 50000 for x in sir)):&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    numar = numar_minim_subsecvente(n, sir)&lt;br /&gt;
    print(f&amp;quot;{numar}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Codrut Borcutean</name></author>
	</entry>
</feed>