Rezolvare completă PbInfo #1933 Sume2

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Sume2:

#include <iostream>
#include <cstdio>
#include <fstream>

using namespace std;

ifstream fin("sume2.in");
ofstream fout("sume2.out");

long long S[100004];

int main() {
    int N;
    fin >> N;

    int x;
    for(int i = 1; i <= N; ++i) {
        fin >> x;

        S[i] = S[i - 1] + (long long) x;
    }

    int M;
    fin >> M;

    int y;
    for(int i = 1; i <= M; ++i) {
        fin >> x >> y;

        fout << S[y] - S[x - 1] << '\n';
    }

    fin.close();
    fout.close();

    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1933 Sume2

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1933 Sume2 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!