1 /*
2 DP
3 n个数,奇数步相加,偶数步相减
4 */
5 #include<stdio.h>
6 #include<stdlib.h>
7 #include<string.h>
8 #include<iostream>
9 #include<algorithm>
10 #include<queue>
11 #include<map>
12 #include<math.h>
13 using namespace std;
14 const int maxn = 150005;
15 const int inf = 0x7fffffff;
16 int dp[ maxn ][ 2 ];
17 int a[ maxn ];
18 int main(){
19 int n;
20 while( scanf("%d",&n)!=EOF ){
21 for( int i=1;i<=n;i++ ) scanf("%d",&a[ i ]);
22 memset( dp,0,sizeof(dp) );
23 for( int i=1;i<=n;i++ ){
24 dp[ i ][ 0 ]=max( dp[ i-1 ][ 0 ],dp[ i-1 ][ 1 ]-a[ i ] );//
25 dp[ i ][ 1 ]=max( dp[ i-1 ][ 0 ]+a[ i ],dp[ i-1 ][ 1 ] );//奇数步 是 偶数步+a[i] 和 前i-1奇数步 中的最大值
26 }
27 printf("%d\n",max( dp[ n ][ 0 ],dp[ n ][ 1 ]));
28 }
29 return 0;
30 }