@[gxa3336](/user/1108083) ```
s=(a[j]+a[j-1]-x);
a[j]=(x-a[j-1]);
```
这两句话调换一下就可以了
by __zaa__ @ 2024-01-25 11:25:16
```c++
#include<bits/stdc++.h>
using namespace std;
long long n,x,a[1000005],ans=0,s;
int main()
{
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int j=1;j<=n;j++){
if((a[j]+a[j-1])>x){
int hh=a[j];
a[j]=abs(x-a[j-1]);
s=(hh+a[j-1]-x);
ans+=s;
}
else
ans+=0;
}
cout<<ans<<endl;
return 0;
}
```
by cyh20100812 @ 2024-01-25 11:26:42
@[gxa3336](/user/1108083)
把第12行和第13行调换一下位置就行了,因为当a[j]+a[j-1]>x时,不能先改变a[j]的值,而是先将s的值求出来,不然a[j]+a[j-1]会等于x,ans就一直会是0
### AC代码如下
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,x,a[10000005],ans=0,s;
int main()
{
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int j=1;j<=n;j++){
if((a[j]+a[j-1])>x){
s=(a[j]+a[j-1]-x);
a[j]=(x-a[j-1]);
ans+=s;
}
else
ans+=0;
}
cout<<ans<<endl;
return 0;
}
```
by hjw100516 @ 2024-01-25 11:27:19
您用的更新后的a[j]去算的差值,,,当然是0啦,,,
by cyh20100812 @ 2024-01-25 11:28:20