<?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=2464_-_anagrame3</id>
	<title>2464 - anagrame3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2464_-_anagrame3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2464_-_anagrame3&amp;action=history"/>
	<updated>2026-05-01T05:39:22Z</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=2464_-_anagrame3&amp;diff=8854&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: Se dau două șiruri &#039;&#039;&#039;S1&#039;&#039;&#039; si &#039;&#039;&#039;S2&#039;&#039;&#039; formate doar cu litere mici. Numim subșir de lungime &#039;&#039;&#039;K&#039;&#039;&#039; al unui șir a un șir &#039;&#039;&#039;a&#039; = ai1, ai2,…, aiK&#039;&#039;&#039; astfel încât să avem: &#039;&#039;&#039;i1&#039;&#039;&#039;  == Cerința == Să se determine lungimea maximă a unui subșir din &#039;&#039;&#039;S1&#039;&#039;&#039;, format prin concatenarea unor anagrame ale șirului &#039;&#039;&#039;S2&#039;&#039;&#039;. Dintre toate subșirurile cu lungime maximă se va determina cel care este cel mai mic lexicografic. Un șir de lungime na se consideră mai mic lexi...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2464_-_anagrame3&amp;diff=8854&amp;oldid=prev"/>
		<updated>2024-01-03T14:58:02Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se dau două șiruri &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039; si &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039; formate doar cu litere mici. Numim subșir de lungime &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; al unui șir a un șir &amp;#039;&amp;#039;&amp;#039;a&amp;#039; = ai1, ai2,…, aiK&amp;#039;&amp;#039;&amp;#039; astfel încât să avem: &amp;#039;&amp;#039;&amp;#039;i1&amp;#039;&amp;#039;&amp;#039;  == Cerința == Să se determine lungimea maximă a unui subșir din &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039;, format prin concatenarea unor anagrame ale șirului &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039;. Dintre toate subșirurile cu lungime maximă se va determina cel care este cel mai mic lexicografic. Un șir de lungime na se consideră mai mic lexi...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se dau două șiruri &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039; si &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039; formate doar cu litere mici. Numim subșir de lungime &amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039; al unui șir a un șir &amp;#039;&amp;#039;&amp;#039;a&amp;#039; = ai1, ai2,…, aiK&amp;#039;&amp;#039;&amp;#039; astfel încât să avem: &amp;#039;&amp;#039;&amp;#039;i1&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine lungimea maximă a unui subșir din &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039;, format prin concatenarea unor anagrame ale șirului &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039;. Dintre toate subșirurile cu lungime maximă se va determina cel care este cel mai mic lexicografic. Un șir de lungime na se consideră mai mic lexicografic decât un șir de lungime nb dacă există un indice i, astfel încât &amp;#039;&amp;#039;&amp;#039;a1=b1, a2=b1, …, ai-1=bi-1&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;ai&amp;lt;bi&amp;#039;&amp;#039;&amp;#039;. Un șir &amp;#039;&amp;#039;&amp;#039;a&amp;#039;&amp;#039;&amp;#039; este anagrama unui șir &amp;#039;&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;#039; dacă sortându-le crescător pe fiecare se obțin două șiruri identice.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;anagrame3in.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie se află un număr natural &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;. Pe linia a doua se află șirul &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039;, iar pe a treia linie se află șirul &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fișierul &amp;#039;&amp;#039;&amp;#039;anagrame3out.txt&amp;#039;&amp;#039;&amp;#039;, dacă &amp;#039;&amp;#039;&amp;#039;P = 1&amp;#039;&amp;#039;&amp;#039;, atunci pe prima linie se va scrie un număr natural reprezentând lungimea maximă a unui șir cu proprietatea cerută, iar dacă &amp;#039;&amp;#039;&amp;#039;P = 2&amp;#039;&amp;#039;&amp;#039;, atunci pe prima linie se va scrie subșirul de lungime maximă cu proprietatea cerută și minim lexicografic.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ Lungime(S2) ≤ Lungime(S1) ≤ 100 000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Se garantează că cel puțin o anagramă a lui &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039; apare în &amp;#039;&amp;#039;&amp;#039;S1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; anagrame3in.txt&lt;br /&gt;
: 1&lt;br /&gt;
: abbaaabababbaabaabba&lt;br /&gt;
: aba&lt;br /&gt;
; anagrame3out.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 15&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Deoarece a apare de &amp;#039;&amp;#039;&amp;#039;11&amp;#039;&amp;#039;&amp;#039; ori, &amp;#039;&amp;#039;&amp;#039;S2&amp;#039;&amp;#039;&amp;#039; poate să apară de cel mult &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; ori. Se observă subșirul format cu litere îngroșate și subliniate &amp;#039;&amp;#039;&amp;#039;abbaaabababbaabaabba&amp;#039;&amp;#039;&amp;#039; deci &amp;#039;&amp;#039;&amp;#039;abaaabababaabaa&amp;#039;&amp;#039;&amp;#039; este un subșir de lungime maximă, egală cu &amp;#039;&amp;#039;&amp;#039;15&amp;#039;&amp;#039;&amp;#039;, cu proprietatea cerută.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; anagrame3in.txt&lt;br /&gt;
: 2&lt;br /&gt;
: abbaaabababbaabaabba&lt;br /&gt;
: aba&lt;br /&gt;
: anagrame3.out&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse.&lt;br /&gt;
: abaaabaabaabaab&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Se observă că subșirul verifică proprietatea cerută.&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; anagrame3in.txt&lt;br /&gt;
: 2&lt;br /&gt;
: abbaaabababbaabaabba&lt;br /&gt;
: abababababababababab&lt;br /&gt;
; anagrame3.out&lt;br /&gt;
: Datele de intrare nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 2464 - anagrame3&lt;br /&gt;
from collections import Counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(sirul1, sirul2):  # functia de validare a datelor de intrare&lt;br /&gt;
    if not (1 &amp;lt;= len(sirul2) &amp;lt;= len(sirul1) &amp;lt;= 100000):&lt;br /&gt;
        raise ValueError(&amp;quot;Datele introduse nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def gaseste_subsir(sirul1, sirul2, p1):  # functia de rezolvare&lt;br /&gt;
    count_sir2 = Counter(sirul2)&lt;br /&gt;
    subsiruri = []&lt;br /&gt;
    for i in range(len(sirul1) - len(sirul2) + 1):&lt;br /&gt;
        if Counter(sirul1[i:i + len(sirul2)]) == count_sir2:&lt;br /&gt;
            subsiruri.append(sirul1[i:i + len(sirul2)])&lt;br /&gt;
    subsiruri.sort()&lt;br /&gt;
    if p1 == 1:&lt;br /&gt;
        return len(subsiruri[-1])&lt;br /&gt;
    elif p1 == 2:&lt;br /&gt;
        return subsiruri[0]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;anagrame3in.txt&amp;quot;, &amp;quot;r&amp;quot;)  # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;anagrame3out.txt&amp;quot;, &amp;quot;w&amp;quot;)  # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        p = int(fisier_intrare.readline())&lt;br /&gt;
        sir1 = fisier_intrare.readline().strip()&lt;br /&gt;
        sir2 = fisier_intrare.readline().strip()&lt;br /&gt;
&lt;br /&gt;
        validare(sir1, sir2)  # apelul functiei de validare&lt;br /&gt;
        rezultat = gaseste_subsir(sir1, sir2, p)  # apelul functiei de rezolvare&lt;br /&gt;
        fisier_iesire.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>