fbpx

Problema #1933 – Sume2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Fie N un numar natural și un șir de N numere naturale V[1], V[2], …, V[N]. Pentru M întrebări de forma (i,j), să se calculeze suma termenilor V[i], V[i + 1], …, V[j].

Date de intrare

Pe prima linie a fișierului sume2.in se găsește un număr natural N. Pe urmatoarea linie sunt N numere naturale, reprezentând valorile șirului V. Pe a treia linie se găsește un număr natural M reprezentând numărul de întrebări, iar pe următoarele M linii câte o pereche de numere (i,j), reprezentând o întrebare pentru care se cere să se calculeze suma V[i] + V[i + 1] + ... + V[j].

Date de ieșire

Pe prima linie din fişierul sume2.out se găseşte răspunsul la prima întrebare din fişierul de intrare, pe a doua linie se găseşte răspunsul la cea de-a doua întrebare, și așa mai departe.

Restricții și precizări

  • 1 ≤ N ≤ 100.000
  • 1 ≤ M ≤ 500.000
  • 0 ≤ V[i] ≤ 1.000.000.000
  • Pentru 30% dintre teste N, M ≤ 1.000

Exemplu

sume2.in

4
1 2 3 4  
2
1 3
2 4

sume2.out

6
9

Explicație

Suma elementelor de pe pozițiile de la 1 la 3 este 6.
Suma elementelor de pe pozițiile de la 2 la 4 este 9.

#include <bits/stdc++.h>
using namespace std;
ifstream cin("sume2.in");
ofstream cout("sume2.out");
int main()
{
    long long n , m , x , y , a[100001] , s[100001]={0};
    cin >> n;
    for(int i = 1 ; i <= n ; ++i)
    {
        cin >> a[i];
        s[i]=s[i-1]+a[i];
    }
    cin >> m;
    for(int i = 0 ; i < m ; ++i)
    {
        cin >> x >> y;
        cout << s[y]-s[x - 1] << endl;
    }
}
Comentarii

S-ar putea sa iti placa