题目链接

//模板吧
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
const int N=40000,INF=1e8; int n,size,root,sz[N],cnt[N],t[N],son[N][2],fa[N]; inline int read()
{
int now=0,f=1;register char c=getchar();
for(;!isdigit(c);c=getchar())
if(c=='-') f=-1;
for(;isdigit(c);now=now*10+c-'0',c=getchar());
return now*f;
} inline void Update(int rt)
{
sz[rt]=sz[son[rt][0]]+sz[son[rt][1]]+1;
}
void Rotate(int x,int &rt)
{
int a=fa[x],b=fa[a],l=(son[a][1]==x),r=l^1;
if(a==rt) rt=x;
else son[b][son[b][1]==a]=x;
fa[a]=x, fa[x]=b, fa[son[x][r]]=a,
son[a][l]=son[x][r], son[x][r]=a;
Update(a),Update(x);
}
void Splay(int x,int &rt)
{
int a,b;
while(x!=rt)
{
a=fa[x], b=fa[a];
if(a!=rt)
{
if((son[a][0]==x)^(son[b][0]==a)) Rotate(x,rt);
else Rotate(a,rt);
}
Rotate(x,rt);
}
}
void Insert(int k,int v)
{
int f=0;
while(k && t[k]!=v) f=k,k=son[k][v>t[k]];
// if(k) ++cnt[k];
if(k) ;
else
{
k=++size, sz[k]=/*cnt[k]=*/1, t[k]=v, fa[k]=f;
if(f) son[f][v>t[f]]=k;
}
Splay(k,root);
}
void Get_Rank(int k,int v)
{
// if(!k) return;
while(son[k][v>t[k]] && t[k]!=v) k=son[k][v>t[k]];
Splay(k,root);
}
int Find(int v,int f)
{
Get_Rank(root,v);
if(t[root]==v||(t[root]<v && !f)||(t[root]>v && f)) return root;
int k=son[root][f];
while(son[k][f^1]) k=son[k][f^1];
return k;
} int main()
{
n=read();
Insert(root,-INF), Insert(root,INF);
int a=read();long long res=a;
Insert(root,a);
for(int i=1;i<n;++i)
{
a=read();
int p=Find(a,0),p2=Find(a,1);
res+=min(a-t[p],t[p2]-a);
// printf("%d %d %d delta:%d\n",a,t[p],t[p2],min(a-t[p],t[p2]-a));
Insert(root,a);
}
printf("%lld",res); return 0;
}

最新文章

  1. [Modern OpenGL系列(三)]用OpenGL绘制一个三角形
  2. linux kernel链表
  3. Ubuntu 使用Cisco VPN、AnyConnect、OpenConnect的方法。
  4. HIT2715 Matrix3(最小费用最大流)
  5. vue.js使用详解
  6. 为什么匿名内部类和局部内部类只能访问final变量
  7. springday04-go2
  8. Pipe(点积叉积的应用POJ1039)
  9. reactjs Uncaught TypeError: Cannot read property &#39;location&#39; of undefined
  10. Beautifulsoup和selenium的简单使用
  11. php匹配图片、视频文件、音乐文件的正则表达式
  12. 2道acm编程题(2014):1.编写一个浏览器输入输出(hdu acm1088);2.encoding(hdu1020)
  13. sui.js和workflow2.js内容详解
  14. 用python自制微信机器人,定时发送天气预报
  15. day22 模块最后的补充。包。
  16. 力扣(LeetCode)1.两数之和
  17. Linux 中 MySQL常用命令
  18. node学习笔记_01 环境搭建
  19. MongoDB之pymongo
  20. 整理:iOS 短信与电话事件的获取

热门文章

  1. NandFlash和iNand
  2. Pcap4J实现抓包器
  3. centos6.5 nfs实时共享
  4. mybatis和spring整合的关键配置
  5. zabbix常见报错问题处理
  6. ubuntu系统初始化网络及mysql配置
  7. visual studio 2017 installer 安装包制作过程出现的问题---此安装程序需要.NET Framework 版本 3.5,请安装该版本,然后重新运行此安装程序,可以从Web获得.NET Framework 。要立即做此事吗?
  8. poj2823 单调队列初步
  9. hdu4533 线段树维护分段函数
  10. Python 列表推导、迭代器与生成器