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ăspunsuri la întrebare
Răspuns de
3
#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;
}
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;
}
Zlatan:
Complexitatea este O(n*m) şi va depăşi limita de timp pe majoritatea testelor.
Alte întrebări interesante
Ed. muzicală,
8 ani în urmă
Limba română,
8 ani în urmă
Germana,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Ed. muzicală,
9 ani în urmă