<?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=1042_-_Subsecvente</id>
	<title>1042 - Subsecvente - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1042_-_Subsecvente"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1042_-_Subsecvente&amp;action=history"/>
	<updated>2026-05-01T06:35:50Z</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=1042_-_Subsecvente&amp;diff=9783&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 07:20, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1042_-_Subsecvente&amp;diff=9783&amp;oldid=prev"/>
		<updated>2024-05-18T07:20:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=1042_-_Subsecvente&amp;amp;diff=9783&amp;amp;oldid=9285&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1042_-_Subsecvente&amp;diff=9285&amp;oldid=prev</id>
		<title>Oros Ioana Diana: Pagină nouă:  Fie n un număr natural și M={S1,S2,…,Sn} o mulțime de șiruri de caractere nevide. Fie Sk un șir de caractere din M. Atunci, orice caracter al lui Sk aparține mulțimii {&#039;a&#039;,&#039;b&#039;}. Notăm prin |Sk| numărul caracterelor șirului Sk sau, echivalent, lungimea sa. O subsecvență Sk[i:j] a lui Sk este formată din caracterele situate pe pozițiile consecutive i, i+1, .., j. Astfel, dacă Sk = &#039;abbbaababa&#039;, atunci Sk[3:6] = &#039;bbaa&#039; sau subsecvența evidențiată: &#039;abbbaabab...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1042_-_Subsecvente&amp;diff=9285&amp;oldid=prev"/>
		<updated>2024-01-08T23:07:39Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă:  Fie n un număr natural și M={S1,S2,…,Sn} o mulțime de șiruri de caractere nevide. Fie Sk un șir de caractere din M. Atunci, orice caracter al lui Sk aparține mulțimii {&amp;#039;a&amp;#039;,&amp;#039;b&amp;#039;}. Notăm prin |Sk| numărul caracterelor șirului Sk sau, echivalent, lungimea sa. O subsecvență Sk[i:j] a lui Sk este formată din caracterele situate pe pozițiile consecutive i, i+1, .., j. Astfel, dacă Sk = &amp;#039;abbbaababa&amp;#039;, atunci Sk[3:6] = &amp;#039;bbaa&amp;#039; sau subsecvența evidențiată: &amp;#039;abbbaabab...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Fie n un număr natural și M={S1,S2,…,Sn} o mulțime de șiruri de caractere nevide. Fie Sk un șir de caractere din M. Atunci, orice caracter al lui Sk aparține mulțimii {&amp;#039;a&amp;#039;,&amp;#039;b&amp;#039;}. Notăm prin |Sk| numărul caracterelor șirului Sk sau, echivalent, lungimea sa. O subsecvență Sk[i:j] a lui Sk este formată din caracterele situate pe pozițiile consecutive i, i+1, .., j. Astfel, dacă Sk = &amp;#039;abbbaababa&amp;#039;, atunci Sk[3:6] = &amp;#039;bbaa&amp;#039; sau subsecvența evidențiată: &amp;#039;abbbaababa&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Fiind dată o mulțime M, se cere să se determine lungimea maximă a unei subsecvențe care se găsește în toate șirurile din M.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare subsecventein.txt conține pe prima linie un număr natural n egal cu cardinalul mulțimii M. Pe fiecare din următoarele n linii se găsește câte un șir din mulțimea M.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire subsecventeout.txt va conține pe prima linie un singur număr natural egal cu lungimea subsecvenței găsite.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 &amp;lt; n &amp;lt; 5&lt;br /&gt;
*Dacă |S| = |S1| + |S2| + … + |Sn|, atunci |S| &amp;lt; 50 001&lt;br /&gt;
*Se garantează că va exista întotdeauna soluție&lt;br /&gt;
*Se garantează că rezultatul nu va depăși 60&lt;br /&gt;
*Pentru 30% din teste: |S| &amp;lt; 101&lt;br /&gt;
*Pentru 55% din teste: |S| &amp;lt; 3 501&lt;br /&gt;
*Pentru 80% din teste: |S| &amp;lt; 10 001&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; subsecventin.txt&lt;br /&gt;
: 4&lt;br /&gt;
: abbabaaaaabb&lt;br /&gt;
: aaaababab&lt;br /&gt;
: bbbbaaaab&lt;br /&gt;
: aaaaaaabaaab&lt;br /&gt;
; subsecventeout.txt&lt;br /&gt;
: 5&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; subsecventin.txt&lt;br /&gt;
: 4&lt;br /&gt;
: abba&lt;br /&gt;
: abab&lt;br /&gt;
: baaa&lt;br /&gt;
: aaa&lt;br /&gt;
; subsecventout.txt&lt;br /&gt;
: 4&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;
#1042 - Sudef lungime_subsecventa_maxima(M):&lt;br /&gt;
    # Verificare restricții&lt;br /&gt;
    if not (1 &amp;lt; len(M) &amp;lt; 5):&lt;br /&gt;
        return &amp;quot;Fals&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    total_length = sum(len(s) for s in M)&lt;br /&gt;
&lt;br /&gt;
    if not (total_length &amp;lt; 50001 and total_length &amp;gt; 0):&lt;br /&gt;
        return &amp;quot;Fals&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    chars_set = set(M[0])&lt;br /&gt;
&lt;br /&gt;
    for char in chars_set:&lt;br /&gt;
        count = min(s.count(char) for s in M)&lt;br /&gt;
        if count &amp;lt; 1:&lt;br /&gt;
            return &amp;quot;Fals&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    result = sum(min(s.count(char) for s in M) for char in chars_set)&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare din fișierul &amp;quot;subsecventein.txt&amp;quot;&lt;br /&gt;
try:&lt;br /&gt;
    with open(&amp;quot;subsecventein.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        n = int(file.readline())&lt;br /&gt;
        M = [file.readline().strip() for _ in range(n)]&lt;br /&gt;
except Exception as e:&lt;br /&gt;
    print(&amp;quot;Fals&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Calcularea și afișarea rezultatului în fișierul &amp;quot;subsecventeout.txt&amp;quot;&lt;br /&gt;
result = lungime_subsecventa_maxima(M)&lt;br /&gt;
&lt;br /&gt;
if result == &amp;quot;Fals&amp;quot;:&lt;br /&gt;
    print(result)&lt;br /&gt;
else:&lt;br /&gt;
    with open(&amp;quot;subsecventeout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
        file.write(str(result) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
bsecvente&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Lungimea unei subsecvenţe comune de lungime maximă este 5.&lt;br /&gt;
&lt;br /&gt;
În exemplu subsecvența comună de lungime 5 este aaaab:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
abbabaaaaabb, aaaababab, bbbbaaaab, aaaaaaabaaab.&lt;/div&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
</feed>