一开始写的不是累加求和 ,累加求和是为了求前缀和
过程中学到了个技巧:可以定义一个打印输出函数,便于调试输出,可以输出中间结果。
#include<iostream>
using namespace std;
void schs(int z[],int n2)
{
for(int i=1;i<=n2;i++)
{
cout << z[i] << " ";
}
}
const int N=1e5+10;
int a[N];
int cf[N];
int qzh[N];
int main()
{
// freopen("xxx.in","r",stdin);
// freopen("yyy.out","w",stdout);
int n,m,left,right,c,sum=0;
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int j=1;j<=n;j++)
{
cf[j]=a[j]-a[j-1];
}
for(int i=1;i<=m;i++)
{
cin >> left >> right >> c;
cf[left]+=c;
cf[right+1]-=c;
}
for(int i=1;i<=n;i++)
{
//第i项的前缀和等于前i-1项的前缀和加上原数组的第i项
a[i]=a[i-1]+cf[i];
}
schs(a,n);
// fclose(stdin);
// fclose(stdout);
return 0;
}