<?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=3823_-_A_-_Flipped_Cards</id>
	<title>3823 - A - Flipped Cards - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3823_-_A_-_Flipped_Cards"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3823_-_A_-_Flipped_Cards&amp;action=history"/>
	<updated>2026-05-01T09:03:01Z</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=3823_-_A_-_Flipped_Cards&amp;diff=10047&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Cerinţa == După ce Le Quack și-a pierdut toți banii dați de mama lui să cumpere pâine la Blackjack, acesta a decis să își creeze propriul joc de cărți unde își poate bate prietenii și să câștige banii înapoi. Jocul se joacă cu un pachet de N cărți. Pachetul de cărți este reprezentat că un șir binar cum va fi descris în cele ce urmează.Cărțile pot fi așezate pe față sau pe spate fără a conta culoarea sau valoarea cărții, pentru simplitat...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3823_-_A_-_Flipped_Cards&amp;diff=10047&amp;oldid=prev"/>
		<updated>2024-06-03T17:33:57Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == După ce Le Quack și-a pierdut toți banii dați de mama lui să cumpere pâine la Blackjack, acesta a decis să își creeze propriul joc de cărți unde își poate bate prietenii și să câștige banii înapoi. Jocul se joacă cu un pachet de N cărți. Pachetul de cărți este reprezentat că un șir binar cum va fi descris în cele ce urmează.Cărțile pot fi așezate pe față sau pe spate fără a conta culoarea sau valoarea cărții, pentru simplitat...&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;
După ce Le Quack și-a pierdut toți banii dați de mama lui să cumpere pâine la Blackjack, acesta a decis să își creeze propriul joc de cărți unde își poate bate prietenii și să câștige banii înapoi. Jocul se joacă cu un pachet de N cărți. Pachetul de cărți este reprezentat că un șir binar cum va fi descris în cele ce urmează.Cărțile pot fi așezate pe față sau pe spate fără a conta culoarea sau valoarea cărții, pentru simplitate codificăm o care întoarsă prin cifra 0 și o carte pe față prin cifra 1 . Fiecare jucător poate face un număr nelimitat de operații de următorul tip: se alege un index i și se întorc toate cărțile din secvență de cărți i...n, adică o carte de valoare 0 se transformă în carte de valoare 1 și invers. Acum este rândul lui Le Quack, el va prezintă configurația curentă a cărților și voi trebuie să îl ajutați cu 2 cerințe, el va poate răsplăti cu un posibil loc I la concurs.&lt;br /&gt;
&lt;br /&gt;
Cerinta 1: Stiind configuratia cartilor sunteti rugati sa aflati lungimea maxima a unei secvente de carti, astfel incat costul de a transforma aceasta secventa intr-o secventa de carti care contin doar valori de 1 este maxim K.&lt;br /&gt;
&lt;br /&gt;
Certina 2: Stiind configuratia cartilor sunteti intrebati care este numarul secventelor de carti pentru care numarul minim de operatii pentru a devni o secventa care contine numai valori de 1 este fix K.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie sunt scrise valorile C, N si K, reprezentand numarul cerintei, numarul de carti respectiv valoarea K descrisa in enunt. Pe a doua linie sunt N valori binare reprezentand sirul de carti. Numerele se citesc din fisierul flipc.in.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Se va tiparii un singur numar, reprezentand raspunul la cerinta aferenta. Numerele se tiparesc in fisieru flipc.out.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Cerinta I:&lt;br /&gt;
Pentru 40/40 p : N &amp;lt;= 1.000.000 , K &amp;lt;= N&lt;br /&gt;
Pentru 30/40 p : N &amp;lt;= 200.000 , K &amp;lt;= N&lt;br /&gt;
Pentru 10/40 p : N &amp;lt;= 10.000 , K &amp;lt;= min(N , 100)&lt;br /&gt;
* Cerinta II:&lt;br /&gt;
Pentru 60/60 p : N &amp;lt;= 1.000.000 , K &amp;lt;= N&lt;br /&gt;
Pentru 50/60 p : N &amp;lt;= 200.000 , K &amp;lt;= N&lt;br /&gt;
Pentru 15/60 p : N &amp;lt;= 10.000 , K &amp;lt;= min(N , 100)&lt;br /&gt;
O carte NU se poate roti de 2 ori in aceasi mutare !&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; flipc.in&lt;br /&gt;
&lt;br /&gt;
  1 5 2&lt;br /&gt;
  10001&lt;br /&gt;
; flipc.out&lt;br /&gt;
&lt;br /&gt;
  5&lt;br /&gt;
; flipc.in&lt;br /&gt;
&lt;br /&gt;
  2 13 4&lt;br /&gt;
  1010011111101&lt;br /&gt;
; flipc.out&lt;br /&gt;
&lt;br /&gt;
  15&lt;br /&gt;
= Explicație ==&lt;br /&gt;
Pentru primul exemplu : putem transforma tot stringul in valori de 1 in 2 operatii, prima operatie la&lt;br /&gt;
pozitia 2 si a doua la pozitia 5.&lt;br /&gt;
Pentru al doilea exemplu : niste exemple de secvente care contin doar valori de 1 si sunt formate prin&lt;br /&gt;
4 operatii ar avea capetele: {1,6}, {2,6}, {1,9} .....&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def max_length_of_sequence(N, K, cards):&lt;br /&gt;
    max_len = 0&lt;br /&gt;
    count_zeroes = 0&lt;br /&gt;
    left, right = 0, 0&lt;br /&gt;
&lt;br /&gt;
    while right &amp;lt; N:&lt;br /&gt;
        if cards[right] == &amp;#039;0&amp;#039;:&lt;br /&gt;
            count_zeroes += 1&lt;br /&gt;
&lt;br /&gt;
        while count_zeroes &amp;gt; K:&lt;br /&gt;
            if cards[left] == &amp;#039;0&amp;#039;:&lt;br /&gt;
                count_zeroes -= 1&lt;br /&gt;
            left += 1&lt;br /&gt;
&lt;br /&gt;
        max_len = max(max_len, right - left + 1)&lt;br /&gt;
        right += 1&lt;br /&gt;
&lt;br /&gt;
    return max_len&lt;br /&gt;
&lt;br /&gt;
def count_sequences(N, K, cards):&lt;br /&gt;
    count = 0&lt;br /&gt;
    count_zeroes = 0&lt;br /&gt;
    left, right = 0, 0&lt;br /&gt;
&lt;br /&gt;
    while right &amp;lt; N:&lt;br /&gt;
        if cards[right] == &amp;#039;0&amp;#039;:&lt;br /&gt;
            count_zeroes += 1&lt;br /&gt;
&lt;br /&gt;
        while count_zeroes &amp;gt; K:&lt;br /&gt;
            if cards[left] == &amp;#039;0&amp;#039;:&lt;br /&gt;
                count_zeroes -= 1&lt;br /&gt;
            left += 1&lt;br /&gt;
&lt;br /&gt;
        if count_zeroes == K:&lt;br /&gt;
            count += N - right&lt;br /&gt;
&lt;br /&gt;
        right += 1&lt;br /&gt;
&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
def solve_problem(C, N, K, cards):&lt;br /&gt;
    if C == 1:&lt;br /&gt;
        return max_length_of_sequence(N, K, cards)&lt;br /&gt;
    elif C == 2:&lt;br /&gt;
        return count_sequences(N, K, cards)&lt;br /&gt;
&lt;br /&gt;
def read_input(file_name):&lt;br /&gt;
    with open(file_name, &amp;#039;r&amp;#039;) as file:&lt;br /&gt;
        line = file.readline().strip().split()&lt;br /&gt;
        C, N, K = map(int, line)&lt;br /&gt;
        cards = file.readline().strip()&lt;br /&gt;
    return C, N, K, cards&lt;br /&gt;
&lt;br /&gt;
def write_output(file_name, result):&lt;br /&gt;
    with open(file_name, &amp;#039;w&amp;#039;) as file:&lt;br /&gt;
        file.write(str(result))&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    C, N, K, cards = read_input(&amp;quot;flipc.in&amp;quot;)&lt;br /&gt;
    result = solve_problem(C, N, K, cards)&lt;br /&gt;
    write_output(&amp;quot;flipc.out&amp;quot;, result)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RebecaBud</name></author>
	</entry>
</feed>