1.我前缀和算错了。第i项前缀和=第(i-1)项前缀和+原数组第i项。
2.我还学到了一个调试技巧:建一个打印输出函数,方便调试输出中间结果。
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int b[N];
void dy(int s[],int gs)
{
for(int i=1;i<=gs;i++)
{
cout << s[i] << " ";
}
cout << endl;
}
int main()
{
//freopen("xxx.in","r",stdin);
//freopen("yyy.out","w",stdout);
int n,m,l,r,c;
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=1;i<=n;i++)
{
b[i]=a[i]-a[i-1];
}
dy(b,n);
for(int i=1;i<=m;i++)
{
cin >> l >> r >> c;
b[l]=b[l]+c;
b[r+1]=b[r+1]-c;
dy(b,n);
}
for(int i=1;i<=n;i++)
{
//
a[i]=a[i-1]+b[i];
}
dy(a,n);
//fclose(stdin);
//fclose(stdout);
return 0;
}