这两个代码有啥区别啊,上面这个我写的,下面这个别人的正确答案,但是我测试用例4个错三个,我不理解差在哪
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int N,Q;
cin>>N>>Q;
long long int p[N],d[N];
for(int i =1;i<=N;i++)
{
cin>>d[i];
p[i]=d[i]-d[i-1];
}
for(int i =1;i<=Q;i++)
{
long long int l,r,x;
cin>>l>>r>>x;
p[l]=p[l]+x;
p[r+1]=p[r+1]-x;
}
for(int i =1;i<=N;i++)
{
d[i]=d[i-1]+p[i];
if(d[i]<0)
printf("0 ");
else
printf("%d ",d[i]);
}
// 请在此输入您的代码
return 0;
}
#include <iostream>
const int maxn=500005;
long long N[maxn]={0};
long long b[maxn]={0};
using namespace std;
int main()
{
int P,Q;
cin>>P>>Q;
for(int i=1;i<=P;i++){
cin>>N[i];
b[i]=N[i]-N[i-1];//定义差分和数组
}
while(Q>0){
long long l,r,x;
cin>>l>>r>>x;
b[l]+=x;
b[r+1]-=x;//对两端进行操作
Q--;
}
for(int i=1;i<=P;i++){
N[i]=b[i]+N[i-1];//最后回归原来数组
if(N[i]<0){
cout<<0<<" ";
}else
cout<<N[i]<<" ";
}
return 0;
}