1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 #include<cstdlib>
5 #include<cmath>
6 #include<algorithm>
7 using namespace std;
8 int n;
9 int sz=0;
10 struct data
11 {
12 int s[2];
13 int val;
14 int fa;
15 }a[50000];
16 int root=0;
17 void rorate(int x,int &k)
18 {
19 int y=a[x].fa,z=a[y].fa;
20 bool l,r;
21 if(a[y].s[0]==x) l=0;else l=1;r=l^1;
22 if(y==k) k=x;
23 else
24 {
25 if(a[z].s[0]==y) a[z].s[0]=x;
26 else a[z].s[1]=x;
27 }
28 a[x].fa=z;a[y].fa=x;a[a[x].s[r]].fa=y;
29 a[y].s[l]=a[x].s[r];a[x].s[r]=y;
30 }
31 void splay(int x,int &k)
32 {
33 while(x!=k)
34 {
35 int y=a[x].fa,z=a[y].fa;
36 if(y!=k)
37 {
38 if((a[y].s[0]==x)^(a[z].s[0]==y)) rorate(x,k);
39 else rorate(y,k);
40 }
41 rorate(x,k);
42 }
43 }
44 void insert(int x,int f,int &now)
45 {
46 if(!now){now=++sz;a[now].fa=f;a[now].val=x;splay(now,root);}
47 else if(x<a[now].val) insert(x,now,a[now].s[0]);
48 else insert(x,now,a[now].s[1]);
49 }
50 int t1=1147483647,t2=-1147483647;
51 void ask_next(int now)
52 {
53 if(!now) return;
54 t1=a[now].val;
55 ask_next(a[now].s[0]);
56 }
57 void ask_before(int now)
58 {
59 if(!now) return;
60 t2=a[now].val;
61 ask_before(a[now].s[1]);
62 }
63 int main()
64 {
65 int ans=0;
66 scanf("%d",&n);
67 for(int i=1;i<=n;i++)
68 {
69 int h;
70 scanf("%d",&h);
71 t1=1147483647,t2=-1147483647;
72 insert(h,0,root);
73 ask_next(a[root].s[1]);
74 ask_before(a[root].s[0]);
75 int add=0;
76 if(i!=1) add=min(t1-h,h-t2);
77 else add=h;
78 ans+=add;
79 }
80 cout<<ans;
81 }