<?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=2043_-_Subsecventa</id>
	<title>2043 - Subsecventa - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2043_-_Subsecventa"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2043_-_Subsecventa&amp;action=history"/>
	<updated>2026-05-01T07:26:16Z</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=2043_-_Subsecventa&amp;diff=9788&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 12:50, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2043_-_Subsecventa&amp;diff=9788&amp;oldid=prev"/>
		<updated>2024-05-18T12:50:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=2043_-_Subsecventa&amp;amp;diff=9788&amp;amp;oldid=9276&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=2043_-_Subsecventa&amp;diff=9276&amp;oldid=prev</id>
		<title>Oros Ioana Diana: Pagină nouă: == Cerința == O echipă de cercetători de la Agenţia Spaţială Europeană au recepţionat un mesaj provenit dintr-o altă galaxie. În urma analizelor complexe efectuate asupra mesajului recepţionat, ei au descoperit că mesajul conţine mai multe subsecvenţe neîntrerupte de caractere care sunt palindroame. Se ştie că o secvenţă de caractere este un palindrom dacă prin citirea ei de la stânga la dreapta şi de la dreapta la stânga se obţin aceleaşi caractere....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2043_-_Subsecventa&amp;diff=9276&amp;oldid=prev"/>
		<updated>2024-01-08T22:10:46Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == O echipă de cercetători de la Agenţia Spaţială Europeană au recepţionat un mesaj provenit dintr-o altă galaxie. În urma analizelor complexe efectuate asupra mesajului recepţionat, ei au descoperit că mesajul conţine mai multe subsecvenţe neîntrerupte de caractere care sunt palindroame. Se ştie că o secvenţă de caractere este un palindrom dacă prin citirea ei de la stânga la dreapta şi de la dreapta la stânga se obţin aceleaşi caractere....&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;
O echipă de cercetători de la Agenţia Spaţială Europeană au recepţionat un mesaj provenit dintr-o&lt;br /&gt;
altă galaxie. În urma analizelor complexe efectuate asupra mesajului recepţionat, ei au descoperit că&lt;br /&gt;
mesajul conţine mai multe subsecvenţe neîntrerupte de caractere care sunt palindroame. Se ştie că o&lt;br /&gt;
secvenţă de caractere este un palindrom dacă prin citirea ei de la stânga la dreapta şi de la dreapta la&lt;br /&gt;
stânga se obţin aceleaşi caractere. Mesajul recepţionat este codificat doar cu literele mari A, B, …, Z&lt;br /&gt;
ale alfabetului englez şi nu conţine alte caractere.&lt;br /&gt;
&lt;br /&gt;
Pentru analiza mesajului recepţionat cercetătorii au nevoie de un program care să determine subsecvenţa palindrom de lungime maximă. În cazul în care există mai multe subsecvenţe care au aceeaşi lungime maximă, se va reţine subsecvenţa care apare prima dată în scrierea mesajului, citit de la stânga spre dreapta.&lt;br /&gt;
&lt;br /&gt;
De exemplu, pentru mesajul “CABABAD”, subsecvenţa palindrom cu lungimea maximă este “ABABA” şi are lungimea 5.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare subsecventain.txt este scris şirul de caractere ale mesajului. Mesajul este format doar din litere mari ale alfabetului englez şi are cel mult 100.000 de caractere.&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire subsecventaout.txt va conține pe prima linie un număr natural reprezentând lungimea&lt;br /&gt;
maximă a unei subsecvenţe palindrom, iar pe a doua linie se va scrie subsecvenţa palindrom de lungime maximă care apare prima dată în mesaj.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*Mesajul conţine doar litere mari şi are cel mult 100.000 de caractere.&lt;br /&gt;
*Pentru 60% din teste numărul de caractere din fişierul de intrare este cel mult 1.000.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; subsecventain.txt&lt;br /&gt;
: CABABAD&lt;br /&gt;
; subsecventaout.txt&lt;br /&gt;
: 5&lt;br /&gt;
: ABABA&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; subsecventain.txt&lt;br /&gt;
: 6&lt;br /&gt;
: PALIND&lt;br /&gt;
: ROMEER&lt;br /&gt;
: AZBAAZA&lt;br /&gt;
: MADAAM&lt;br /&gt;
: ABABA&lt;br /&gt;
: CIVIC&lt;br /&gt;
; subsecventaout.txt&lt;br /&gt;
: 5&lt;br /&gt;
: AZBAAZA&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;
#2043 - Subsecventa&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
with open(&amp;quot;subsecventain.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    mesaj = f.readline().strip()&lt;br /&gt;
&lt;br /&gt;
# Verificarea restricțiilor&lt;br /&gt;
if not (1 &amp;lt;= len(mesaj) &amp;lt;= 100000 and all(&amp;#039;A&amp;#039; &amp;lt;= ch &amp;lt;= &amp;#039;Z&amp;#039; for ch in mesaj)):&lt;br /&gt;
    with open(&amp;quot;subsecventaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        g.write(&amp;quot;Fals\n&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    # Găsirea subsecvenței palindrom de lungime maximă&lt;br /&gt;
    def longest_palindrome(s):&lt;br /&gt;
        n = len(s)&lt;br /&gt;
        start = 0&lt;br /&gt;
        max_len = 1&lt;br /&gt;
&lt;br /&gt;
        # Verificare palindrom pentru o subsecvență de lungime impară&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            low = i - 1&lt;br /&gt;
            high = i + 1&lt;br /&gt;
            while low &amp;gt;= 0 and high &amp;lt; n and s[low] == s[high]:&lt;br /&gt;
                if high - low + 1 &amp;gt; max_len:&lt;br /&gt;
                    start = low&lt;br /&gt;
                    max_len = high - low + 1&lt;br /&gt;
                low -= 1&lt;br /&gt;
                high += 1&lt;br /&gt;
&lt;br /&gt;
        # Verificare palindrom pentru o subsecvență de lungime pară&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            low = i - 1&lt;br /&gt;
            high = i&lt;br /&gt;
            while low &amp;gt;= 0 and high &amp;lt; n and s[low] == s[high]:&lt;br /&gt;
                if high - low + 1 &amp;gt; max_len:&lt;br /&gt;
                    start = low&lt;br /&gt;
                    max_len = high - low + 1&lt;br /&gt;
                low -= 1&lt;br /&gt;
                high += 1&lt;br /&gt;
&lt;br /&gt;
        return max_len, s[start:start + max_len]&lt;br /&gt;
&lt;br /&gt;
    # Determinarea rezultatelor&lt;br /&gt;
    lungime_maxima, subsecventa_maxima = longest_palindrome(mesaj)&lt;br /&gt;
&lt;br /&gt;
    # Scrierea rezultatelor în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;subsecventaout.txt&amp;quot;, &amp;quot;w&amp;quot;) as g:&lt;br /&gt;
        g.write(str(lungime_maxima) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        g.write(subsecventa_maxima + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Cea mai lungă subsecvenţă palindrom are lungimea 5.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Există o singură subsecvenţă palindrom de lungime 5 în mesaj: ABABA.&lt;/div&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
</feed>