<?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=1737_-_K_Siruri</id>
	<title>1737 - K Siruri - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1737_-_K_Siruri"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1737_-_K_Siruri&amp;action=history"/>
	<updated>2026-05-01T04:46:25Z</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=1737_-_K_Siruri&amp;diff=9779&amp;oldid=prev</id>
		<title>Oros Ioana Diana at 06:51, 18 May 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1737_-_K_Siruri&amp;diff=9779&amp;oldid=prev"/>
		<updated>2024-05-18T06:51:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=1737_-_K_Siruri&amp;amp;diff=9779&amp;amp;oldid=9289&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=1737_-_K_Siruri&amp;diff=9289&amp;oldid=prev</id>
		<title>Oros Ioana Diana: Pagină nouă: Se consideră un număr natural K și o secvență de N șiruri s[1], s[2], …, s[N]. Fiecare șir este format din cifre distincte. Pentru două șiruri s[i] și s[j] se definește operația de scădere (–) astfel: s[i]-s[j] va conține doar șirul de cifre care apar în s[i], dar nu apar în s[j]. De exemplu, dacă s[i]=(1,3,8) și s[j]=(2,9,3), atunci s[i]-s[j]=(1,8). Această operație nu este asociativă, (s[i]-s[j])-s[p] este diferită de s[i]-(s[j]-s[p]). De aceea, d...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1737_-_K_Siruri&amp;diff=9289&amp;oldid=prev"/>
		<updated>2024-01-08T23:33:36Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se consideră un număr natural K și o secvență de N șiruri s[1], s[2], …, s[N]. Fiecare șir este format din cifre distincte. Pentru două șiruri s[i] și s[j] se definește operația de scădere (–) astfel: s[i]-s[j] va conține doar șirul de cifre care apar în s[i], dar nu apar în s[j]. De exemplu, dacă s[i]=(1,3,8) și s[j]=(2,9,3), atunci s[i]-s[j]=(1,8). Această operație nu este asociativă, (s[i]-s[j])-s[p] este diferită de s[i]-(s[j]-s[p]). De aceea, d...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se consideră un număr natural K și o secvență de N șiruri s[1], s[2], …, s[N]. Fiecare șir este format din cifre distincte. Pentru două șiruri s[i] și s[j] se definește operația de scădere (–) astfel: s[i]-s[j] va conține doar șirul de cifre care apar în s[i], dar nu apar în s[j]. De exemplu, dacă s[i]=(1,3,8) și s[j]=(2,9,3), atunci s[i]-s[j]=(1,8). Această operație nu este asociativă, (s[i]-s[j])-s[p] este diferită de s[i]-(s[j]-s[p]). De aceea, dacă se alege un subșir s[i1], s[i2], …, s[ip] din secvență, atunci convenim ca s[i1]-s[i2]-...-s[ip] să se execute de la dreapta la stânga.&lt;br /&gt;
&lt;br /&gt;
Exemplu: (1,2,3)-(2,3)-(1,3)=(1,2,3)-(2)=(1,3). S-au obținut două cifre distincte.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se determine numărul subșirurilor nevide s[i1], s[i2], …, s[ip] din secvența s[1], s[2], …, s[N] asupra cărora, dacă se efectuează operația de scădere (adică s[i1]-s[i2]-...-s[ip]), se obțin cel puțin K cifre distincte. Pentru că numărul subșirurilor poate fi foarte mare, atunci el se va calcula modulo 123457.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare ksiruriin.txt conține pe prima linie numerele naturale K și N. Pe următoarele N linii se află câte un șir s[i]. Linia i+1, i = 1..N, va conține valorile m c[1] c[2] .. c[m], unde m este numărul de termeni al șirului s[i], iar c[1], c[2], …, c[m] sunt cifrele distincte ale șirului s[i].&lt;br /&gt;
== Date de ieșire == &lt;br /&gt;
Fișierul de ieșire ksiruriout.txt va conține reprezentând numărul de subșiruri, modulo 123457.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 ≤ K ≤ 8&lt;br /&gt;
*2 ≤ N ≤ 50 000&lt;br /&gt;
*1 ≤ i1 &amp;lt; i2 &amp;lt; ... &amp;lt; ip ≤ N&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; ksiruriin.txt&lt;br /&gt;
: 3 3&lt;br /&gt;
: 5 5 6 7 8 9&lt;br /&gt;
: 3 4 5 6&lt;br /&gt;
: 3 7 8 9 &lt;br /&gt;
; ksiruriout.txt&lt;br /&gt;
: 6&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; ksiruriin.txt&lt;br /&gt;
: 5 4&lt;br /&gt;
: 4 5 6 7 8&lt;br /&gt;
: 3 6 7 8&lt;br /&gt;
: 4 5 7 8&lt;br /&gt;
: 3 9 7 8&lt;br /&gt;
; ksiruriout.txt&lt;br /&gt;
: 2&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;
#1737 - K Siruri&lt;br /&gt;
def count_subsequences(K, N, sequences):&lt;br /&gt;
    result = 0&lt;br /&gt;
    mod = 123457&lt;br /&gt;
&lt;br /&gt;
    for i in range(N):&lt;br /&gt;
        current_sequence = set(sequences[i][1:])&lt;br /&gt;
        result += 1  # Adăugați șirul curent la rezultat&lt;br /&gt;
&lt;br /&gt;
        for j in range(i - 1, -1, -1):&lt;br /&gt;
            current_sequence -= set(sequences[j][1:])&lt;br /&gt;
            if len(current_sequence) &amp;gt;= K:&lt;br /&gt;
                result = (result * 2) % mod&lt;br /&gt;
&lt;br /&gt;
    return result&lt;br /&gt;
&lt;br /&gt;
# Citirea datelor de intrare&lt;br /&gt;
with open(&amp;quot;ksiruriin.txt&amp;quot;, &amp;quot;r&amp;quot;) as infile:&lt;br /&gt;
    K, N = map(int, infile.readline().split())&lt;br /&gt;
    sequences = [list(map(int, line.split()[1:])) for line in infile]&lt;br /&gt;
&lt;br /&gt;
# Verificarea restricțiilor&lt;br /&gt;
if not (1 &amp;lt;= K &amp;lt;= 8 and 2 &amp;lt;= N &amp;lt;= 50000):&lt;br /&gt;
    print(&amp;quot;Fals&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    # Calculul rezultatului&lt;br /&gt;
    result = count_subsequences(K, N, sequences)&lt;br /&gt;
&lt;br /&gt;
    # Scrierea rezultatului în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;ksiruriout.txt&amp;quot;, &amp;quot;w&amp;quot;) as outfile:&lt;br /&gt;
        outfile.write(str(result))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
s1 = 5 6 7 8 9&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
s2 = 4 5 6&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
s3 = 7 8 9&lt;br /&gt;
&lt;br /&gt;
Cele șase subșiruri nevide sunt:&lt;br /&gt;
&lt;br /&gt;
s1, s1-s2, s1-s2-s3, s2, s2-s3, s3&lt;/div&gt;</summary>
		<author><name>Oros Ioana Diana</name></author>
	</entry>
</feed>