<?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=4115_-_Investitie</id>
	<title>4115 - Investitie - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4115_-_Investitie"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4115_-_Investitie&amp;action=history"/>
	<updated>2026-05-01T06:38:48Z</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=4115_-_Investitie&amp;diff=10043&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Enunt == După o lungă activitate în domeniul instalaţiilor sanitare, Dorel s-a hotărât să investească averea acumulată în acţiuni ale mai multor companii. Astfel, el dispune de o listă cu N companii la care vrea să cumpere acţiuni, în M zile consecutive.  În prima zi, suma de bani investită în compania i este s[1][i] = a[i], pentru orice i=1..N, unde valorile a[i] sunt date.  Numerele a[1], a[2], …, a[N] reprezintă o permutare a numerelor 1,2,...,N}....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4115_-_Investitie&amp;diff=10043&amp;oldid=prev"/>
		<updated>2024-06-03T17:27:52Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == După o lungă activitate în domeniul instalaţiilor sanitare, Dorel s-a hotărât să investească averea acumulată în acţiuni ale mai multor companii. Astfel, el dispune de o listă cu N companii la care vrea să cumpere acţiuni, în M zile consecutive.  În prima zi, suma de bani investită în compania i este s[1][i] = a[i], pentru orice i=1..N, unde valorile a[i] sunt date.  Numerele a[1], a[2], …, a[N] reprezintă o permutare a numerelor 1,2,...,N}....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
După o lungă activitate în domeniul instalaţiilor sanitare, Dorel s-a hotărât să investească averea acumulată în acţiuni ale mai multor companii. Astfel, el dispune de o listă cu N companii la care vrea să cumpere acţiuni, în M zile consecutive.&lt;br /&gt;
&lt;br /&gt;
În prima zi, suma de bani investită în compania i este s[1][i] = a[i], pentru orice i=1..N, unde valorile a[i] sunt date.&lt;br /&gt;
&lt;br /&gt;
Numerele a[1], a[2], …, a[N] reprezintă o permutare a numerelor 1,2,...,N}.&lt;br /&gt;
&lt;br /&gt;
În ziua a j-a el va investi în compania i o sumă de bani egală cu s[j][i] = s[j-1][a[i]], pentru orice zi j =2..M şi orice companie i = 1..N.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
După finalizarea planului de investiţii, Dorel vrea să realizeze Q statistici referitoare la sumele investite. Fiind date Q seturi de valori zi, zf, cl, cr, el doreşte să afle ce sumă a investit în perioada cuprinsă între zilele zi și zf (inclusiv acestea), la companiile cu numere de ordine cuprinse între cl și cr (inclusiv acestea).&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fişierului de intrare investitie.in se află numerele N şi M, separate prin spaţiu. Pe a doua linie se află valorile a[1], a[2], ..., a[N], separate prin spaţiu. Pe a treia linie se află valoarea lui Q. Pe următoarele Q linii se află câte patru valori, zi, zf, cl, cr, separate prin spaţiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
În fişierul de ieşire investitie.out se vor afişa, pe linii diferite, sumele investite corespunzătoare fiecăreia din cele Q statistici din fişierul de intrare.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N, Q ≤ 100.000&lt;br /&gt;
* 1 ≤ M ≤ 1.000.000.000&lt;br /&gt;
* 1 ≤ zi ≤ zf ≤ M&lt;br /&gt;
* 1 ≤ cl ≤ cr ≤ N&lt;br /&gt;
* 0 ≤ cr -cl ≤ 100&lt;br /&gt;
* Pentru 10 puncte, M = 1&lt;br /&gt;
* Pentru 20 de puncte, 1 ≤  N, M ≤ 100, 1 ≤ Q ≤ 1000&lt;br /&gt;
* Pentru 12 puncte, 101 ≤ N , M ≤ 3000&lt;br /&gt;
* Pentru 24 de puncte, 1 ≤ N ≤ 50&lt;br /&gt;
* Pentru 34 de puncte fără alte restricţii&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; investitie.in&lt;br /&gt;
&lt;br /&gt;
  8 3&lt;br /&gt;
  3 1 7 2 6 4 5 8&lt;br /&gt;
  5&lt;br /&gt;
  1 1 3 7&lt;br /&gt;
  1 2 1 4&lt;br /&gt;
  1 3 2 8&lt;br /&gt;
  2 3 3 6&lt;br /&gt;
  3 3 3 3&lt;br /&gt;
; investitie.out&lt;br /&gt;
&lt;br /&gt;
  24&lt;br /&gt;
  29&lt;br /&gt;
  93&lt;br /&gt;
  24&lt;br /&gt;
  6&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Sumele investite în cele trei zile, în acţiuni ale celor opt companii, vor fi:&lt;br /&gt;
&lt;br /&gt;
3 &amp;amp; 1 &amp;amp; 7 &amp;amp; 2 &amp;amp; 6 &amp;amp; 4 &amp;amp; 5 &amp;amp; 8&lt;br /&gt;
7 &amp;amp; 3 &amp;amp; 5 &amp;amp; 1 &amp;amp; 4 &amp;amp; 2 &amp;amp; 6 &amp;amp; 8&lt;br /&gt;
5 &amp;amp; 7 &amp;amp; 6 &amp;amp; 3 &amp;amp; 2 &amp;amp; 1 &amp;amp; 4 &amp;amp; 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prima statistică cere suma investită în prima zi în companiile cu numere de ordine de la 3 la 7. Suma este 7+2+6+4+5=24.&lt;br /&gt;
A doua statistică cere suma investită în primele două zile în companiile cu numerele de ordine de la 12 la 4. Suma este (3+1+7+2)+(7+3+5+1)=29.&lt;br /&gt;
Similar se calculează celelalte statistici.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&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 investition(N, M, a, Q, queries):&lt;br /&gt;
    investments = [[0] * (N + 1) for _ in range(M + 1)]&lt;br /&gt;
    for i in range(1, N + 1):&lt;br /&gt;
        investments[1][i] = a[i - 1]&lt;br /&gt;
    for j in range(2, M + 1):&lt;br /&gt;
        for i in range(1, N + 1):&lt;br /&gt;
            investments[j][i] = investments[j - 1][a[i - 1]]&lt;br /&gt;
    &lt;br /&gt;
    cumulative_investments = [[0] * (N + 1) for _ in range(M + 1)]&lt;br /&gt;
    for j in range(1, M + 1):&lt;br /&gt;
        for i in range(1, N + 1):&lt;br /&gt;
            cumulative_investments[j][i] = cumulative_investments[j - 1][i] + investments[j][i]&lt;br /&gt;
    &lt;br /&gt;
    results = []&lt;br /&gt;
    for query in queries:&lt;br /&gt;
        zi, zf, cl, cr = query&lt;br /&gt;
        total_investment = 0&lt;br /&gt;
        for i in range(cl, cr + 1):&lt;br /&gt;
            total_investment += cumulative_investments[zf][i] - cumulative_investments[zi - 1][i]&lt;br /&gt;
        results.append(total_investment)&lt;br /&gt;
    return results&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    N, M = map(int, input().split())&lt;br /&gt;
    a = list(map(int, input().split()))&lt;br /&gt;
    Q = int(input())&lt;br /&gt;
    queries = [list(map(int, input().split())) for _ in range(Q)]&lt;br /&gt;
&lt;br /&gt;
    results = investition(N, M, a, Q, queries)&lt;br /&gt;
    for result in results:&lt;br /&gt;
        print(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>