cf789c

主要是线性时间内求最大连续和

#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
#define ll long long int n,a[maxn];
ll ans; ll solve(){
ll Max=-,Min=,sum[maxn];
sum[]=;
for(int i=;i<n;i++){
sum[i]=sum[i-]+a[i];
Min=min(Min,sum[i]);
Max=max(Max,sum[i]-Min);
}
return Max;
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
for(int i=;i<=n-;i++) a[i]=abs(a[i+]-a[i]);
for(int i=;i<=n-;i++) if(i%==) a[i]/=-;
ans=-;
ans=max(ans,solve());
for(int i=;i<=n-;i++) a[i]*=-;
ans=max(ans,solve());
printf("%lld",ans);
}
上一篇:STM32相关知识点


下一篇:while和do-while语句的异同之处