<?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=3373_-_culori4</id>
	<title>3373 - culori4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3373_-_culori4"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3373_-_culori4&amp;action=history"/>
	<updated>2026-05-01T08:48: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=3373_-_culori4&amp;diff=7748&amp;oldid=prev</id>
		<title>Vasiliu Costel Andrei: Pagină nouă: == Enunț == Am o prietenă creatoare de modă. Pentru a-și realiza creațiile ea vopsește uneori materialele și mă roagă în prealabil să o ajut. Azi vrea să vopsească o pânză cu lungimea N cm folosind C nuanțe ale aceleiași culori, codificate de la 1 la C. Fiecare cm de pânză fiind colorat cu aceeași nuanță pe toată lățimea, va ieși o pânză în dungi. Inițial eu simulez cu ajutorul calculatorului vopsirea materialului, prietena mea începe apoi să i...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3373_-_culori4&amp;diff=7748&amp;oldid=prev"/>
		<updated>2023-12-10T20:04:57Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Am o prietenă creatoare de modă. Pentru a-și realiza creațiile ea vopsește uneori materialele și mă roagă în prealabil să o ajut. Azi vrea să vopsească o pânză cu lungimea N cm folosind C nuanțe ale aceleiași culori, codificate de la 1 la C. Fiecare cm de pânză fiind colorat cu aceeași nuanță pe toată lățimea, va ieși o pânză în dungi. Inițial eu simulez cu ajutorul calculatorului vopsirea materialului, prietena mea începe apoi să i...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Am o prietenă creatoare de modă. Pentru a-și realiza creațiile ea vopsește uneori materialele și mă roagă în prealabil să o ajut. Azi vrea să vopsească o pânză cu lungimea N cm folosind C nuanțe ale aceleiași culori, codificate de la 1 la C. Fiecare cm de pânză fiind colorat cu aceeași nuanță pe toată lățimea, va ieși o pânză în dungi. Inițial eu simulez cu ajutorul calculatorului vopsirea materialului, prietena mea începe apoi să intervină: de la cm A la cm B, trebuie modificată intensitatea culorii cu X puncte (intensitatea poate crește sau poate scădea, obținându-se astfel o altă nuanță). După nenumărate modificări de acest tip, să spunem M modificări, prietena mea va fi mulțumită și va trece la vopsirea efectivă a pânzei.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care determină și afișează:&lt;br /&gt;
1. Lungimea maximă a unei bucăți de pânză de aceeași culoare după vopsirea inițială;&lt;br /&gt;
2. Cum va arăta pânza în urma modificărilor prietenei mele.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare culoriin.txt conține pe prima linie cerința (1 sau 2). Linia următoare conține trei numere naturale C N M separate prin câte un spațiu, reprezentând numărul de culori, lungimea în cm a pânzei, respectiv numărul de modificări efectuate de prietena mea; următoarea linie conține N numere naturale separate prin câte un spațiu, c1 c2 c3 ... cN reprezentând culoarea fiecărui cm de pânză după vopsirea inițială, iar următoarele M linii conțin fiecare câte trei numere: două numere naturale A B, separate printr-un spațiu, reprezentând A – poziția la care începe și B – poziția finală la care se termină modificarea intensității și, separat printr-un spațiu, un număr întreg X reprezentând valoarea cu care se modifică intensitatea.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire culoriout.txt va conține o singură linie pe care va fi scris un număr natural determinat conform cerinței, dacă cerința este 1 sau N numere naturale determinate conform cerinței, dacă cerința este 2.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 10.000&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 1.000.000&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 200.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culoriin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 3 8 2&lt;br /&gt;
: 1 1 2 2 2 2 3 3 &lt;br /&gt;
: 2 5 1&lt;br /&gt;
: 5 8 -1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culoriout.txt&lt;br /&gt;
: 4&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Cea mai lungă secvență de elemente egale este 2 2 2 2 și are 4 elemente&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culoriin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 3 8 2&lt;br /&gt;
: 1 1 2 2 2 2 3 3&lt;br /&gt;
: 2 5 1&lt;br /&gt;
: 5 8 -1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culoriout.txt&lt;br /&gt;
: 1 2 3 3 2 1 2 2 &lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
După prima modificare vectorul este: 1 2 3 3 3 2 3 3.&lt;br /&gt;
După a doua modificare este: 1 2 3 3 2 1 2 2.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culoriin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 3 10001 2&lt;br /&gt;
: 1 1 2 2 2 2 3 3 &lt;br /&gt;
: 2 5 1&lt;br /&gt;
: 5 8 -1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&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;
#3373 - Culori4&lt;br /&gt;
&lt;br /&gt;
def valideaza_date_intrare(n, c, m, culori, modificari):&lt;br /&gt;
    # Funcție pentru validarea datelor de intrare&lt;br /&gt;
    if not (0 &amp;lt; n &amp;lt; 10001):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (0 &amp;lt; c &amp;lt; 1000001):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (0 &amp;lt; m &amp;lt; 200001):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(culori) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for culoare in culori:&lt;br /&gt;
        if not (1 &amp;lt;= culoare &amp;lt;= c):&lt;br /&gt;
            return False&lt;br /&gt;
    for modificare in modificari:&lt;br /&gt;
        a, b, x = modificare&lt;br /&gt;
        if not (1 &amp;lt;= a &amp;lt;= b &amp;lt;= n):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def proceseaza_cererea(cerere, c, n, culori, modificari):&lt;br /&gt;
    # Funcție pentru procesarea cererii și returnarea rezultatului&lt;br /&gt;
    if cerere == 1:&lt;br /&gt;
        # cerința 1: Lungimea maximă a unei bucăți de pânză de aceeași culoare după vopsirea inițială&lt;br /&gt;
        lungime_maxima = 1&lt;br /&gt;
        lungime_curenta = 1&lt;br /&gt;
        for i in range(1, n):&lt;br /&gt;
            if culori[i] == culori[i - 1]:&lt;br /&gt;
                lungime_curenta += 1&lt;br /&gt;
                lungime_maxima = max(lungime_maxima, lungime_curenta)&lt;br /&gt;
            else:&lt;br /&gt;
                lungime_curenta = 1&lt;br /&gt;
        return lungime_maxima&lt;br /&gt;
    elif cerere == 2:&lt;br /&gt;
        # cerința 2: cum va arăta pânza în urma modificărilor prietenei mele&lt;br /&gt;
        for modificare in modificari:&lt;br /&gt;
            a, b, x = modificare&lt;br /&gt;
            for i in range(a - 1, b):&lt;br /&gt;
                culori[i] = (culori[i] + x - 1) % c + 1&lt;br /&gt;
        return culori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Funcție principală care citește datele de intrare și apelează funcțiile de validare și procesare&lt;br /&gt;
    with open(&amp;#039;culoriin.txt&amp;#039;, &amp;#039;r&amp;#039;) as fisier:&lt;br /&gt;
        cerere = int(fisier.readline().strip())&lt;br /&gt;
        c, n, m = map(int, fisier.readline().split())&lt;br /&gt;
        culori = list(map(int, fisier.readline().split()))&lt;br /&gt;
        modificari = [list(map(int, fisier.readline().split())) for _ in range(m)]&lt;br /&gt;
&lt;br /&gt;
    if valideaza_date_intrare(n, c, m, culori, modificari):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    rezultat = proceseaza_cererea(cerere, c, n, culori, modificari)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;#039;culoriout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fisier:&lt;br /&gt;
        if cerere == 1:&lt;br /&gt;
            fisier.write(str(rezultat))&lt;br /&gt;
        elif cerere == 2:&lt;br /&gt;
            fisier.write(&amp;quot; &amp;quot;.join(map(str, rezultat)))&lt;br /&gt;
&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>Vasiliu Costel Andrei</name></author>
	</entry>
</feed>