<?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=1835_-_twoop</id>
	<title>1835 - twoop - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1835_-_twoop"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1835_-_twoop&amp;action=history"/>
	<updated>2026-05-01T23:23:14Z</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=1835_-_twoop&amp;diff=8894&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: Se dă un șir de &#039;&#039;&#039;N&#039;&#039;&#039; elemente, numere întregi. Pe acest șir se aplică operații de două tipuri : Tip 1: &#039;&#039;&#039;st dr val&#039;&#039;&#039; – elementele de pe pozițiile din intervalul &#039;&#039;&#039;[st, dr]&#039;&#039;&#039; cresc cu valoarea &#039;&#039;&#039;val&#039;&#039;&#039; Tip 2: &#039;&#039;&#039;poz&#039;&#039;&#039; – să se afișeze valoarea elementului de pe poziția &#039;&#039;&#039;poz&#039;&#039;&#039; . Toate operațiile de tipul &#039;&#039;&#039;2&#039;&#039;&#039; se aplică numai după ce s-au aplicat toate operațiile de tipul &#039;&#039;&#039;1&#039;&#039;&#039;. == Cerința == Dându-se șirul de elemente și operațiile, înce...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1835_-_twoop&amp;diff=8894&amp;oldid=prev"/>
		<updated>2024-01-03T17:05:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se dă un șir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; elemente, numere întregi. Pe acest șir se aplică operații de două tipuri : Tip 1: &amp;#039;&amp;#039;&amp;#039;st dr val&amp;#039;&amp;#039;&amp;#039; – elementele de pe pozițiile din intervalul &amp;#039;&amp;#039;&amp;#039;[st, dr]&amp;#039;&amp;#039;&amp;#039; cresc cu valoarea &amp;#039;&amp;#039;&amp;#039;val&amp;#039;&amp;#039;&amp;#039; Tip 2: &amp;#039;&amp;#039;&amp;#039;poz&amp;#039;&amp;#039;&amp;#039; – să se afișeze valoarea elementului de pe poziția &amp;#039;&amp;#039;&amp;#039;poz&amp;#039;&amp;#039;&amp;#039; . Toate operațiile de tipul &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; se aplică numai după ce s-au aplicat toate operațiile de tipul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;. == Cerința == Dându-se șirul de elemente și operațiile, înce...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se dă un șir de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; elemente, numere întregi. Pe acest șir se aplică operații de două tipuri :&lt;br /&gt;
Tip 1: &amp;#039;&amp;#039;&amp;#039;st dr val&amp;#039;&amp;#039;&amp;#039; – elementele de pe pozițiile din intervalul &amp;#039;&amp;#039;&amp;#039;[st, dr]&amp;#039;&amp;#039;&amp;#039; cresc cu valoarea &amp;#039;&amp;#039;&amp;#039;val&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Tip 2: &amp;#039;&amp;#039;&amp;#039;poz&amp;#039;&amp;#039;&amp;#039; – să se afișeze valoarea elementului de pe poziția &amp;#039;&amp;#039;&amp;#039;poz&amp;#039;&amp;#039;&amp;#039; .&lt;br /&gt;
Toate operațiile de tipul &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; se aplică numai după ce s-au aplicat toate operațiile de tipul &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Dându-se șirul de elemente și operațiile, începand cu cele de tipul 1, aplicați operațiile pe șir.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;twoopin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul de elemente, &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; , numărul de operații de tip 1, &amp;#039;&amp;#039;&amp;#039;nrOp1&amp;#039;&amp;#039;&amp;#039; , și numărul de operații de tip 2, &amp;#039;&amp;#039;&amp;#039;nrOp2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Pe următoarea linie se află cele &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; elemente separate printr-un spațiu.&lt;br /&gt;
Pe următoarele &amp;#039;&amp;#039;&amp;#039;nrOp1&amp;#039;&amp;#039;&amp;#039; linii se află câte o operație de tip 1 sub forma: &amp;#039;&amp;#039;&amp;#039;st dr val&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Pe următoarele &amp;#039;&amp;#039;&amp;#039;nrOp2&amp;#039;&amp;#039;&amp;#039; linii se află câte o operație de tip 2 sub forma: &amp;#039;&amp;#039;&amp;#039;poz&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;twoopout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe primele &amp;#039;&amp;#039;&amp;#039;nrOp2&amp;#039;&amp;#039;&amp;#039; linii câte un element, rezultatul unei operații de &amp;#039;&amp;#039;&amp;#039;tip 2&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ N ≤ 100.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;-1.000.000.000 ≤ a[i], val ≤ 1.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ st ≤ dr ≤ N&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ poz ≤ N&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; twoopin.txt&lt;br /&gt;
: 4 4 2&lt;br /&gt;
: 5 0 -1 2&lt;br /&gt;
: 1 2 -2&lt;br /&gt;
: 2 3 10&lt;br /&gt;
: 1 4 2&lt;br /&gt;
: 2 3 3&lt;br /&gt;
: 2&lt;br /&gt;
: 3&lt;br /&gt;
; twoopout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 13&lt;br /&gt;
: 14&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5 0 -1 2&amp;#039;&amp;#039;&amp;#039; – șir initial&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3 -2 -1 2&amp;#039;&amp;#039;&amp;#039; – după operația 1&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;3 8 9 2&amp;#039;&amp;#039;&amp;#039; – după operația 2&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5 10 11 4&amp;#039;&amp;#039;&amp;#039; – după operația 3&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5 13 14 4&amp;#039;&amp;#039;&amp;#039; – după operația 4&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; twoopin.txt&lt;br /&gt;
: 5 2 2&lt;br /&gt;
: 5 0 -1 2 1500000000&lt;br /&gt;
: 1 2 -2&lt;br /&gt;
: 2 3 10&lt;br /&gt;
: 2&lt;br /&gt;
: 3&lt;br /&gt;
; twoopout.txt&lt;br /&gt;
: Datele introduse 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;
# 1835 - twoop&lt;br /&gt;
def validare(numarde_elemente, numar_operatii, numar_operatiiv2, sirul, operatiiv1, operatiiv2):&lt;br /&gt;
    if numarde_elemente &amp;gt; 100000 or numarde_elemente &amp;lt; 1 or numar_operatii &amp;lt; 1 or numar_operatiiv2 &amp;lt; 1:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
    for element in sirul:&lt;br /&gt;
        if element &amp;gt; 1000000000 or element &amp;lt; -1000000000:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    for operatie in operatiiv1:&lt;br /&gt;
        if operatie[0] &amp;lt; 1 or operatie[1] &amp;gt; numarde_elemente or operatie[2] &amp;gt; 1000000000 or operatie[2] &amp;lt; -1000000000:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    for pozitie in operatiiv2:&lt;br /&gt;
        if pozitie &amp;lt; 1 or pozitie &amp;gt; numarde_elemente:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def aplica_operatii(sirul, operatii, operatiiv2):&lt;br /&gt;
    for operatie in operatii:&lt;br /&gt;
        for i in range(operatie[0]-1, operatie[1]):&lt;br /&gt;
            sirul[i] += operatie[2]&lt;br /&gt;
    for pozitie in operatiiv2:&lt;br /&gt;
        fisier_iesire.write(str(sirul[pozitie - 1]) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;twoopin.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    fisier_iesire = open(&amp;quot;twoopout.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        numar_elemente, numar_operatii1, numar_operatii2 = map(int, fisier_intrare.readline().split())&lt;br /&gt;
        sir = list(map(int, fisier_intrare.readline().split()))&lt;br /&gt;
        operatii1 = [list(map(int, fisier_intrare.readline().split())) for _ in range(numar_operatii1)]&lt;br /&gt;
        operatii2 = [int(fisier_intrare.readline()) for _ in range(numar_operatii2)]&lt;br /&gt;
&lt;br /&gt;
        validare(numar_elemente, numar_operatii1, numar_operatii2, sir, operatii1, operatii2)&lt;br /&gt;
        aplica_operatii(sir, operatii1, operatii2)&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare 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>