splay
来源:互联网 发布:适合女生喝的红酒知乎 编辑:程序博客网 时间:2024/03/29 00:11
#include <cstdio>#include <cstring>#include <climits>#include <algorithm>#define N 100001using namespace std;int n, a[N], b[N];int size, p[N], s[N], o[N], c[N][2];void update(int x){s[x] = s[c[x][0]] + s[c[x][1]] + 1;o[x] = max(max(o[c[x][0]], o[c[x][1]]), a[x]);}void rotate(int &x, int t){int y = c[x][t];c[x][t] = c[y][1 - t];c[y][1 - t] = x;update(x);update(y);x = y;}void insert(int &x, int i){if(x){int t = 0;if(max(a[x], o[c[x][1]]) <= a[i] && 1 + s[c[x][1]] <= b[i])b[i] -= 1 + s[c[x][1]], insert(c[x][0], i);elset = 1, insert(c[x][1], i);if(p[c[x][t]] < p[x])rotate(x, t);}elsep[x = i] = rand();update(x);}void output(int x){if(x){output(c[x][0]);printf("%d ", x);output(c[x][1]);}}int main(){scanf("%d", &n);int root = size = 0;memset(c, 0, sizeof(c));p[0] = INT_MAX, s[0] = 0, o[0] = INT_MIN;for(int i = 1; i <= n; ++ i)scanf("%d%d", a + i, b + i), insert(root, i);output(root);printf("\n");return 0;}
0 0
- SPLAY
- splay
- splay
- splay
- Splay
- Splay
- splay
- splay
- splay
- splay
- Splay
- splay
- Splay
- splay
- Splay
- Splay
- splay
- Splay大功告成
- MySql字符处理
- 一位ACMer过来人的心得
- 暂时结束《C程序设计语言》
- Windbg命令学习5(!address和s和!vadump)
- Python 利用urllib2 lxml 抓取网页信息
- splay
- postfix make出错
- 动作按钮【Action Button】-可没你想的那样简单
- 设计模式-创建型:单例模式(1)
- ARM-Linux驱动移植--RTC(实时时钟)移植
- 控件视图以及控件视图的事件处理
- JAVA String.format 方法使用介绍
- 瞬间的细节:触摸与点击的不同
- 用户界面设计中“状态”和“动作”的表达