treap 1286郁闷的出纳员.cpp
#include<cstdio>
#include<cstdlib>
#include<ctime>
struct shu
{
int l,r,sum,zhi,dui;
}a[100005];
int n,xia,root,size,lei,leave;
char ch[2];
void you(int &a1)
{
int t=a[a1].l;
a[a1].l=a[t].r;
a[t].r=a1;
a[t].sum=a[a1].sum;
a[a1].sum=a[a[a1].l].sum+a[a[a1].r].sum+1;
a1=t;
return;
}
void zuo(int &a1)
{
int t=a[a1].r;
a[a1].r=a[t].l;
a[t].l=a1;
a[t].sum=a[a1].sum;
a[a1].sum=a[a[a1].l].sum+a[a[a1].r].sum+1;
a1=t;
return;
}
void jia(int &a1,int a2)
{
if(a1==0)
{
size++;
a1=size;
a[a1].sum=1;
a[a1].zhi=a2;
a[a1].dui=rand();
return;
}
a[a1].sum++;
if(a2<a[a1].zhi)
{
jia(a[a1].l,a2);
if(a[a[a1].l].dui<a[a1].dui)
you(a1);
}
else
{
jia(a[a1].r,a2);
if(a[a[a1].r].dui<a[a1].dui)
zuo(a1);
}
return;
}
int shan(int &a1,int a2)
{
if(a1==0)
return 0;
int t;
if(a[a1].zhi<a2)
{
t=a[a[a1].l].sum+1;
a1=a[a1].r;
return t+shan(a1,a2);
}
t=shan(a[a1].l,a2);
a[a1].sum-=t;
return t;
}
int zhao(int a1,int a2)
{
if(a[a[a1].r].sum+1==a2)
return a[a1].zhi;
if(a[a[a1].r].sum>=a2)
return zhao(a[a1].r,a2);
else
return zhao(a[a1].l,a2-a[a[a1].r].sum-1);
}
int main()
{
root=size=0;
srand(time(0));
scanf("%d%d",&n,&xia);
for(int i=0;i<n;i++)
{
int a1;
scanf("%s%d",ch,&a1);
if(ch[0]=='I')
if(a1>=xia)
jia(root,a1-lei);
if(ch[0]=='A')
lei+=a1;
if(ch[0]=='S')
{
lei-=a1;
leave+=shan(root,xia-lei);
}
if(ch[0]=='F')
{
if(a1>a[root].sum)
printf("-1\n");
else
printf("%d\n",zhao(root,a1)+lei);
}
}
printf("%d\n",leave);
return 0;
}
treap 1286郁闷的出纳员.cpp的更多相关文章
- c++之路进阶——codevs1286(郁闷的出纳员)
1286 郁闷的出纳员 2004年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description OIER公司 ...
- bzoj 1503: [NOI2004]郁闷的出纳员 Treap
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 6263 Solved: 2190[Submit][Statu ...
- BZOJ 1503 郁闷的出纳员 (treap)
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 13370 Solved: 4808[Submit][Stat ...
- [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
- [BZOJ 1503]郁闷的出纳员(fhq treap)
[BZOJ 1503]郁闷的出纳员 题面 第一行有两个非负整数n和min.n表示下面有多少条命令,min表示工资下界. 接下来的n行,每行表示一条命令.命令可以是以下四种之一: 名称 格式 作用 I命 ...
- AC日记——郁闷的出纳员 codevs 1286
郁闷的出纳员 思路: 设工资下限为ko,然后ko--(因为要小于工资下限): 设cur为记录工资增长,降低: 设第i个人的工资为pos: 对应的四种操作: 插入:cur-pos-ko: 增长:cur- ...
- BZOJ 1503: [NOI2004]郁闷的出纳员
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 10526 Solved: 3685[Submit][Stat ...
- 1503: [NOI2004]郁闷的出纳员 (SBT)
1503: [NOI2004]郁闷的出纳员 http://www.lydsy.com/JudgeOnline/problem.php?id=1503 Time Limit: 5 Sec Memory ...
- P1486 [NOI2004]郁闷的出纳员
P1486 [NOI2004]郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷 ...
随机推荐
- poj3449Geometric Shapes
链接 繁琐. 处理出来所有的线段,再判断相交. 对于正方形的已知对角顶点求剩余两顶点 (列出4个方程求解) p[].x=(p[].x+p[].x+p[].y-p[].y)/; p[].y=(p[].y ...
- Python学习(15)文件/IO
目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...
- jquery_dialog实现效果
jquery_dialog实现效果 jquery_dialog.js <!-- /******************************************************** ...
- android学习---- WindowManager 接口 (
The interface that apps use to talk to the window manager. 这个接口用于与 window manager (窗口管理器, 应用框架层) 进行交 ...
- Android:控件WebView显示网页
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要 ...
- QBC用法
方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge > ...
- 转:随机函数 C++中rand()函数的用法
转自:http://blog.163.com/wujiaxing009@126/blog/static/719883992011113011359154/ 一.C++中不能使用random()函数 ...
- 华为面试题——约瑟夫问题的C++简单实现(循环链表)
/* author:jiangxin Blog:http://blog.csdn.net/jiangxinnju Function:method of Josephus que ...
- String的那一大堆事儿--1
perfTimeStr = perfTimeStr.replace(perfTimeStr.substring(0,4), "____"); perfTimeStr = perfT ...
- jquery 设置css样式
$("#61dh a").css('color', 多个样式属性 var divcss = { background: '#EEE', width: '478px', mar ...