1 /* 2 CF789C. Functions again 3 http://codeforces.com/contest/789/problem/C 4 水题 5 题意:求数组中的连续和的最大值 6 */ 7 #include <cstdio> 8 #include <algorithm> 9 #include <cstring> 10 #include <cmath> 11 #include <vector> 12 #include <queue> 13 //#define test 14 using namespace std; 15 const int Nmax=1e6; 16 int num[Nmax]; 17 int num1[Nmax]; 18 int num2[Nmax]; 19 long long ans1,ans2; 20 int main() 21 { 22 #ifdef test 23 #endif 24 int n; 25 //freopen("test.in","r",stdin); 26 scanf("%d",&n); 27 for(int i=1;i<=n;i++) 28 { 29 scanf("%d",&num[i]); 30 } 31 for(int i=1;i<n;i++) 32 num[i]=abs(num[i]-num[i+1]); 33 for(int i=1;i<n;i++) 34 { 35 if(i&1) 36 num1[i]=num[i],num2[i]=-num[i]; 37 else 38 num1[i]=-num[i],num2[i]=num[i]; 39 } 40 //for(int i=1;i<n;i++) 41 //printf("%d %d\n",num1[i],num2[i]); 42 ans1=ans2=0LL; 43 long long tmp=0LL; 44 for(int i=1;i<n;i++) 45 { 46 tmp+=1LL*num1[i]; 47 if(tmp>ans1) 48 ans1=tmp; 49 if(tmp<0LL) 50 tmp=0LL; 51 } 52 tmp=0; 53 for(int i=1;i<n;i++) 54 { 55 tmp+=1LL*num2[i]; 56 //printf("i:%d tmp:%d\n",i,tmp); 57 if(tmp>ans2) 58 ans2=tmp; 59 if(tmp<0LL) 60 tmp=0LL; 61 } 62 printf("%lld\n",max(ans1,ans2)); 63 return 0; 64 }