做这道题的时候有点头昏脑胀,代码可能有的地方比较多余,
望谅解。
#include <stdio.h>
int main(int argc, char *argv[]) {
int i,ofirst,last,nfirst,K,n,sum=0,move=0,flag=1,flag2=1,extremeF,extremeL,cnt=0;
scanf("%d",&K);
for(i=0;i<K;i++){
scanf("%d",&n);
move+=n;
if(n<0){
if(i==0) extremeF=n;
cnt++;
}
if(flag && move>0){
if(flag2){
ofirst=n;
flag2=0;
}
nfirst=n;
flag=0;
}
if(move>sum){
sum=move;
ofirst=nfirst;
last=n;
} else{
if(move<0){
move=0;
flag=1;
}
}
}
extremeL=n;
if(cnt==K) printf("%d %d %d",sum,extremeF,extremeL);
else if(sum==0) printf("0 0 0");
else printf("%d %d %d",sum,ofirst,last);
return 0;
}