#include<bits/stdc++.h>
using namespace std;
#define rint register int
const int maxn=1e5+5;
inline int read() {
int f=1,x=0;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=(x<<3)+(x<<1)+(c^'0');
c=getchar();
}
return x*f;
}
int n,m,x[maxn],f1[maxn],f2[maxn],ans=-0x3f3f3f3f;
int main() {
freopen("ceshi.in","r",stdin);
freopen("ceshi.out","w",stdout);
n=read();
for(rint i=1; i<=n; i++)x[i]=read();
f1[1]=x[1];
ans=x[1];
for(rint i=2; i<=n; i++) {
f1[i]=max(f1[i-1]+x[i],x[i]);
ans=max(ans,f1[i]);
cout<<ans<<endl;
}
cout<<ans;
return 0;
}
为什么这段代码是错的但下面这段是正确的
#include<bits/stdc++.h>
using namespace std;
#define rint register int
const int maxn=1e5+5;
inline int read() {
int f=1,x=0;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=(x<<3)+(x<<1)+(c^'0');
c=getchar();
}
return x*f;
}
int n,m,x[maxn],f1[maxn],f2[maxn],ans=-0x3f3f3f3f;
int main() {
freopen("ceshi2.in","r",stdin);
freopen("ceshi2.out","w",stdout);
n=read();
for(rint i=1; i<=n; i++) {
x[i]=read();
if(i==1)f1[i]=x[i];
else f1[i]=max(f1[i-1]+x[i],x[i]);
ans=max(f1[i],ans);
}
cout<<ans;
return 0;
}