👤

Cerința --> #1512 Mars pbinfo (ajutor am nevoie de 100 pct.)

Se consideră un tablou unidimensional cu n elemente numere întregi, numerotate de la 1 la n, inițial toate nule. Asupra tabloului se fac m operații s d X cu semnificația: toate elementele cu indici cuprinși între s și d își măresc valoare cu X.

Să se afișeze tabloul după realizarea celor m operații.

Date de intrare
Programul citește de la tastatură numerele n m, iar apoi m triplete s d X, cu semnificația din enunț.

Date de ieșire
Programul va afișa pe ecran cele n elemente ale tabloului, separate prin exact un spațiu.

Restricții și precizări
1 ≤ n ≤ 200.000
1 ≤ m ≤ 200.000
1 ≤ s ≤ d ≤ n
-1000 ≤ X ≤ 1000



Exemplu
Intrare:
10 6
8 10 2
3 10 -3
5 9 7
5 5 5
6 7 2
1 1 -1

Ieșire:
-1 0 -3 -3 9 6 6 6 6 -1


Răspuns :

#include <iostream>
using namespace std;

int main(){

int n,m,st,dr,X,i;
cout<<"Introduceți lungimea vectorului și numărul de operații: ";
cin>>n>>m;
int v[n+1];
for(i=1;i<=n;i++){
v[i]=0;
}
cout<<"Acum introduceți perechile stânga,dreapta,valoare adițională X\n";
while(m>0){
cin>>st>>dr>>X;
for(i=st;i<=dr;i++){
v[i]=v[i]+X;
}
m--;
}
cout<<"Vectorul după operații:\n";
for(i=1;i<=n;i++){
cout<<v[i]<<" ";
}
return 0;
}