<?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=3652_-_secvcost</id>
	<title>3652 - secvcost - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3652_-_secvcost"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3652_-_secvcost&amp;action=history"/>
	<updated>2026-05-02T01:22:21Z</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=3652_-_secvcost&amp;diff=8863&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: Se dă un șir &#039;&#039;&#039;V&#039;&#039;&#039; de &#039;&#039;&#039;N&#039;&#039;&#039; numere naturale distincte. O secvență &#039;&#039;&#039;[X, Y]&#039;&#039;&#039; este formată din toate pozițiile consecutive dintre &#039;&#039;&#039;X&#039;&#039;&#039; și &#039;&#039;&#039;Y&#039;&#039;&#039; din șir. Se definește costul unei poziții &#039;&#039;&#039;P&#039;&#039;&#039; ca fiind valoarea din șir de pe poziția &#039;&#039;&#039;P&#039;&#039;&#039; înmulțită cu lungimea maximă a unei secvențe care conține poziția &#039;&#039;&#039;P&#039;&#039;&#039; și a cărei valoare maximă se află tot pe poziția &#039;&#039;&#039;P&#039;&#039;&#039;. == Cerința == Se dau &#039;&#039;&#039;M&#039;&#039;&#039; întrebări de forma: &#039;&#039;&#039;X Y&#039;&#039;&#039; – să se...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3652_-_secvcost&amp;diff=8863&amp;oldid=prev"/>
		<updated>2024-01-03T15:15:54Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Se dă un șir &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039; de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale distincte. O secvență &amp;#039;&amp;#039;&amp;#039;[X, Y]&amp;#039;&amp;#039;&amp;#039; este formată din toate pozițiile consecutive dintre &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Y&amp;#039;&amp;#039;&amp;#039; din șir. Se definește costul unei poziții &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; ca fiind valoarea din șir de pe poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; înmulțită cu lungimea maximă a unei secvențe care conține poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; și a cărei valoare maximă se află tot pe poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;. == Cerința == Se dau &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; întrebări de forma: &amp;#039;&amp;#039;&amp;#039;X Y&amp;#039;&amp;#039;&amp;#039; – să se...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Se dă un șir &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039; de &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale distincte. O secvență &amp;#039;&amp;#039;&amp;#039;[X, Y]&amp;#039;&amp;#039;&amp;#039; este formată din toate pozițiile consecutive dintre &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;Y&amp;#039;&amp;#039;&amp;#039; din șir. Se definește costul unei poziții &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; ca fiind valoarea din șir de pe poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; înmulțită cu lungimea maximă a unei secvențe care conține poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039; și a cărei valoare maximă se află tot pe poziția &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Se dau &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; întrebări de forma: &amp;#039;&amp;#039;&amp;#039;X Y&amp;#039;&amp;#039;&amp;#039; – să se calculeze suma tuturor costurilor pozițiilor din secvența &amp;#039;&amp;#039;&amp;#039;[X, Y]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Atenție! Când se calculează costul unei poziții P din &amp;#039;&amp;#039;&amp;#039;[X, Y]&amp;#039;&amp;#039;&amp;#039;, secvența de lungime maximă pe care valoarea &amp;#039;&amp;#039;&amp;#039;V[P]&amp;#039;&amp;#039;&amp;#039; este maximă se calculează în funcție de tot șirul, NU în funcție de secvența &amp;#039;&amp;#039;&amp;#039;[X, Y]&amp;#039;&amp;#039;&amp;#039; (pentru clarificare urmăriți exemplul).&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;secvcostin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie cele două numere &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;, separate prin spațiu. Pe a doua linie se află &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; numere naturale distincte reprezentând elementele șirului &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;. Pe următoarele &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; linii se află perechi de valori &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Y&amp;#039;&amp;#039;&amp;#039; reprezentând întrebările la care trebuie să se răspundă.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;secvcostout.txt&amp;#039;&amp;#039;&amp;#039; va conține &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; linii cu câte un număr pe fiecare linie reprezentând răspunsul la cele &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; întrebări, în ordine.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* Toate valorile din șir sunt mai mici sau egale decât 5.000.000&lt;br /&gt;
* Pentru 25% din teste &amp;#039;&amp;#039;&amp;#039;N, M ≤ 500&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru alte 25% din teste &amp;#039;&amp;#039;&amp;#039;N, M ≤ 10.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru restul de 50% din teste &amp;#039;&amp;#039;&amp;#039;N, M ≤ 200.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; secvcostin.txt&lt;br /&gt;
: 5 2&lt;br /&gt;
: 2 3 1 5 4&lt;br /&gt;
: 3 3&lt;br /&gt;
: 2 2&lt;br /&gt;
; secvcostout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse. &lt;br /&gt;
: 1&lt;br /&gt;
: 9&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Pentru prima întrebare avem &amp;#039;&amp;#039;&amp;#039;V[3] = 1&amp;#039;&amp;#039;&amp;#039; care este maxim pe secvența &amp;#039;&amp;#039;&amp;#039;[3, 3]&amp;#039;&amp;#039;&amp;#039;. Costul este &amp;#039;&amp;#039;&amp;#039;1 * 1 = 1&amp;#039;&amp;#039;&amp;#039;. Pentru a doua întrebare avem &amp;#039;&amp;#039;&amp;#039;V[2] = 3&amp;#039;&amp;#039;&amp;#039; care este maxim pe secvența &amp;#039;&amp;#039;&amp;#039;[1, 3]&amp;#039;&amp;#039;&amp;#039;. Costul este &amp;#039;&amp;#039;&amp;#039;3 * 3 = 9&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 2 == &lt;br /&gt;
; secvcostin.txt&lt;br /&gt;
: 5 3&lt;br /&gt;
: 2 3 1 5 4&lt;br /&gt;
: 1 3&lt;br /&gt;
: 5 5&lt;br /&gt;
: 4 4&lt;br /&gt;
; secvcostout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 12&lt;br /&gt;
: 4&lt;br /&gt;
: 25&lt;br /&gt;
== Explicație ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;2*1 + 3*3 + 1*1 = 12&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;4*1 = 4&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5*5 = 25&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; secvcostin.txt&lt;br /&gt;
: 10 10&lt;br /&gt;
: 10 30 29 39 34 32 3 6 7 9&lt;br /&gt;
: 6 7&lt;br /&gt;
: 1 7&lt;br /&gt;
: 6 10&lt;br /&gt;
: 1 5&lt;br /&gt;
: 7 9&lt;br /&gt;
: 4 7&lt;br /&gt;
: 3 7&lt;br /&gt;
: 5 6&lt;br /&gt;
: 3 7&lt;br /&gt;
: 6 10&lt;br /&gt;
; secvcostout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 163&lt;br /&gt;
: 886&lt;br /&gt;
: 232&lt;br /&gt;
: 723&lt;br /&gt;
: 36&lt;br /&gt;
: 757&lt;br /&gt;
: 786&lt;br /&gt;
: 364&lt;br /&gt;
: 786&lt;br /&gt;
: 232&lt;br /&gt;
== Exemplul 4 == &lt;br /&gt;
; secvcostin.txt&lt;br /&gt;
: 5 2&lt;br /&gt;
: 2 3 1 5 6000000&lt;br /&gt;
: 3 3&lt;br /&gt;
: 2 2&lt;br /&gt;
; secvcostout.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;
# 3652 - secvcost&lt;br /&gt;
def validare(date1):           # functia de validare a datelor de intrare&lt;br /&gt;
    numar_elemente, numar_intrebari = map(int, date1[0].split())&lt;br /&gt;
    if not (1 &amp;lt;= numar_elemente &amp;lt;= 200000) or not (1 &amp;lt;= numar_intrebari &amp;lt;= 200000):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    sir = list(map(int, date1[1].split()))&lt;br /&gt;
    if len(sir) != numar_elemente or any(element &amp;gt; 5000000 for element in sir):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    intrebari = [list(map(int, date1[i].split())) for i in range(2, 2 + numar_intrebari)]&lt;br /&gt;
    if any(not (1 &amp;lt;= X &amp;lt;= Y &amp;lt;= numar_elemente) for X, Y in intrebari):&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&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 cost_secventa(date1):                     # functia de rezolvare&lt;br /&gt;
    numar_elemente, numar_intrebari = map(int, date1[0].split())&lt;br /&gt;
    sir = list(map(int, date1[1].split()))&lt;br /&gt;
    intrebari = [list(map(int, date1[i].split())) for i in range(2, 2 + numar_intrebari)]&lt;br /&gt;
    for X, Y in intrebari:&lt;br /&gt;
        cost = sum([sir[i] * max(len(sir[:i+1]), len(sir[i:])) for i in range(X-1, Y)])&lt;br /&gt;
        fisier_iesire.write(f&amp;quot;{cost}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;secvcostin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;secvcostout.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;
    # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam&lt;br /&gt;
    try:&lt;br /&gt;
        date = fisier_intrare.readlines()      # citirea numerelor se face ca sir de caractere&lt;br /&gt;
&lt;br /&gt;
        validare(date)                 # apelul functiei de validare&lt;br /&gt;
        cost_secventa(date)               # apelul functiei de rezolvare&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>