[Bzoj1208][HNOI2004]宠物收养所
来源:互联网 发布:iphone必备软件推荐 编辑:程序博客网 时间:2024/04/29 23:32
#include<iostream>//treap#include<cstdlib>#include<cstdio>#include<ctime>#define N 80010#define Mod 1000000using namespace std;struct data{ int l,r,v,w,rnd;}node[N];int n,sz,tmp1,tmp2,root,kind;long long ans;/*inline int read(){ int x=0;char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x;}*/void lrotate(int &k){ int t=node[k].r; node[k].r=node[t].l; node[t].l=k;k=t;}void rrotate(int &k){ int t=node[k].l; node[k].l=node[t].r; node[t].r=k;k=t;}void insert(int &k,int x){ if(!k){ node[k=++sz].rnd=rand(); node[k].v=x;node[k].w=1; return; } if(x==node[k].v)node[k].w++; else if(x<node[k].v){ insert(node[k].l,x); if(node[node[k].l].rnd<node[k].rnd)rrotate(k); } else{ insert(node[k].r,x); if(node[node[k].r].rnd<node[k].rnd)lrotate(k); } }void del(int &k,int x){ if(!k)return; if(node[k].v==x){ if(node[k].w>1)node[k].w--; else if(node[k].l*node[k].r==0)k=node[k].l+node[k].r; else if(node[node[k].l].rnd<node[node[k].r].rnd){rrotate(k);del(k,x);} else{lrotate(k);del(k,x);} } else if(x<node[k].v)del(node[k].l,x); else del(node[k].r,x);}void ask_prev(int k,int x){ if(!k)return; if(x>=node[k].v){tmp1=k;ask_prev(node[k].r,x);} else ask_prev(node[k].l,x);}void ask_next(int k,int x){ if(!k)return; if(x<=node[k].v){tmp2=k;ask_next(node[k].l,x);} else ask_next(node[k].r,x);}int main(){ //freopen("pet.in","r",stdin); //freopen("pet.out","w",stdout); //srand(time(0)); scanf("%d",&n); for(int i=1;i<=n;i++){ int a,b; scanf("%d%d",&a,&b); if(root==0){ kind=a; insert(root,b); } else if(kind^a==0)insert(root,b); else{ tmp1=tmp2=-1; ask_prev(root,b);ask_next(root,b); if(tmp1==-1&&tmp2==-1)continue; if(tmp1==-1){ans+=node[tmp2].v-b;ans%=1000000;del(root,node[tmp2].v);} else if(tmp2==-1){ans+=b-node[tmp1].v;ans%=1000000;del(root,node[tmp1].v);} else if(tmp1!=-1&&tmp2!=-1){ if(b-node[tmp1].v>node[tmp2].v-b) {ans+=node[tmp2].v-b;ans%=1000000;del(root,node[tmp2].v);} else{ans+=b-node[tmp1].v;ans%=1000000;del(root,node[tmp1].v);} } } } printf("%lld",ans); return 0;}
0 0
- [bzoj1208] [HNOI2004]宠物收养所
- [Bzoj1208][HNOI2004]宠物收养所
- BZOJ1208 [HNOI2004]宠物收养所
- [BZOJ1208][HNOI2004]宠物收养所
- 【bzoj1208】[HNOI2004]宠物收养所
- bzoj1208【HNOI2004】宠物收养所
- BZOJ1208: [HNOI2004]宠物收养所
- [BZOJ1208] [HNOI2004]宠物收养所
- 【BZOJ1208】【HNOI2004】宠物收养所
- BZOJ1208: [HNOI2004]宠物收养所
- 【bzoj1208】[HNOI2004]宠物收养所
- bzoj1208: [HNOI2004]宠物收养所
- 【bzoj1208】[HNOI2004]宠物收养所
- bzoj1208 [HNOI2004]宠物收养所
- bzoj1208: [HNOI2004]宠物收养所
- BZOJ1208: [HNOI2004]宠物收养所
- bzoj1208 [HNOI2004]宠物收养所
- bzoj1208: [HNOI2004]宠物收养所
- XML基础
- 数据库原理——主属性,属性,主码,候选码
- MAC下安装firefly新手教程
- 软件测试大背景
- C#实现VPN连接
- [Bzoj1208][HNOI2004]宠物收养所
- android菜瓜笔记之android lint problem
- 黑马程序员 函数重载小结
- UML-泛化、关联、聚合、组合、依赖
- 简单的投票计数软件
- 解决错误:NAND: could not create temp file for system NAND disk image: No such file or directory
- linux下avi文件解析(附源码)
- LeetCode: Trapping Rain Water [041]
- 九度 题目1522:包含min函数的栈