Cerința
Se dă un șir cu n
elemente numere întregi, numerotate de la 1
la n
și m
perechi de indici i j
. Pentru fiecare pereche de indici se calculează suma elementelor din secvență determinată de cei doi indici. Afișați suma maximă obținută.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere întregi, apoi m
și m
perechi i j
.
Date de ieșire
Programul va afișa pe ecran numărul S
, reprezentând suma maximă determinată.
Restricții și precizări
1 ≤ n ≤ 100.000
;1 ≤ m ≤ 500.000
;1 ≤ i,j ≤ n
;- cele
n
elemente ale șirului vor avea cel mult nouă cifre.
Exemplu
Intrare
5 7 9 -6 1 -8 3 1 3 4 2 2 5
Ieșire
10
Explicație
- suma elementelor din secvența delimitată de
1 3
este10
; - suma elementelor din secvența delimitată de
4 2
este4
; - suma elementelor din secvența delimitată de
2 5
este-4
; - suma maximă este
10
.
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 SumeSecv1:
#include <iostream>
#include <cassert>
using namespace std;
int n,m, A[100001];
long long S[100001];
int main()
{
cin >> n;
for(int i = 1 ; i <= n ; i ++)
cin >> A[i];
S[0] = 0;
for(int i = 1 ; i <= n ; i ++)
S[i] = S[i-1] + A[i];
cin >> m;
long long smax = -1;
for(int i = 1 ; i <= n ; i ++)
if(A[i] < 0)
smax += A[i];
while(m)
{
int i , j;
cin >> i >> j;
assert(i >= 1 && i <= n);
assert(j >= 1 && j <= n);
if(i > j)
swap(i,j);
if( smax < S[j] - S[i-1])
smax = S[j] - S[i-1];
m --;
}
cout << smax;
}
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 .
Rezolvarea problemei #2921 SumeSecv1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2921 SumeSecv1 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!