题目描述
查看题目信息
给定数组a[1],a[2],...,a[n],以及q个操作,每个操作由l,r,x三个整数组成,表示对a[l],a[l+1],...,a[r]这一段数组的每个数都加上x(保证l,r大小合法)。请输出最后的数组。
输入格式
第一行一个整数n,表示数组的大小。
第二行n个整数a[i],表示数组。
第三行一个整数q,表示操作的数量。
接下来q行,每行三个整数l,r,x,表示一次操作。
输出格式
n个整数,表示最后数组的情况。
样例输入
5 1 2 3 4 5 3 1 1 1 2 4 -1 3 5 2
样例输出
2 1 4 5 7
问题提示
对于30%的数据,1<=n,q<=100,0<=a[i]<=100,0<=x<=100。
对于60%的数据,1<=n,q<=100000,0<=a[i]<=100,0<=x<=100。
对于100%的数据,1<=n,q<=200000,0<=a[i]<=1e9,0<=|x|<=1e9。
代码
#include<iostream>
using namespace std;
long long a[1000001],b[1000001],c[1000001];//要用long long
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>b[i];
a[i]=b[i]-b[i-1];
}
int m,l,r,x;
cin>>m;
while(m--)
{
cin>>l>>r>>x;
a[l]+=x;
a[r+1]-=x;
}
for(int i=1;i<=n;i++)
{
c[i]=c[i-1]+a[i];
cout<<c[i]<<" ";
}
return 0;
}