#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的更多相关文章

  1. c++之路进阶——codevs1286(郁闷的出纳员)

    1286 郁闷的出纳员 2004年NOI全国竞赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master       题目描述 Description OIER公司 ...

  2. bzoj 1503: [NOI2004]郁闷的出纳员 Treap

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 6263  Solved: 2190[Submit][Statu ...

  3. BZOJ 1503 郁闷的出纳员 (treap)

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 13370  Solved: 4808[Submit][Stat ...

  4. [BZOJ1503][NOI2004]郁闷的出纳员 无旋Treap

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...

  5. [BZOJ 1503]郁闷的出纳员(fhq treap)

    [BZOJ 1503]郁闷的出纳员 题面 第一行有两个非负整数n和min.n表示下面有多少条命令,min表示工资下界. 接下来的n行,每行表示一条命令.命令可以是以下四种之一: 名称 格式 作用 I命 ...

  6. AC日记——郁闷的出纳员 codevs 1286

    郁闷的出纳员 思路: 设工资下限为ko,然后ko--(因为要小于工资下限): 设cur为记录工资增长,降低: 设第i个人的工资为pos: 对应的四种操作: 插入:cur-pos-ko: 增长:cur- ...

  7. BZOJ 1503: [NOI2004]郁闷的出纳员

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 10526  Solved: 3685[Submit][Stat ...

  8. 1503: [NOI2004]郁闷的出纳员 (SBT)

    1503: [NOI2004]郁闷的出纳员 http://www.lydsy.com/JudgeOnline/problem.php?id=1503 Time Limit: 5 Sec  Memory ...

  9. P1486 [NOI2004]郁闷的出纳员

    P1486 [NOI2004]郁闷的出纳员 题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷 ...

随机推荐

  1. UVA 11468【AC自动机+DP】

    dp[i][j]表示走了i步走到j结点的概率.初始值dp[0][0] = 1.当走到的结点不是单词尾结点时,才能走过去. !end[i]&&last[i] == root时,该结点才可 ...

  2. Java用webSocket实现tomcat的日志实时输出到web页面

    原文:http://blog.csdn.net/smile326/article/details/52218264 1.场景需求 后台攻城狮和前端攻城狮一起开发时,经常受到前端攻城狮的骚扰,动不动就来 ...

  3. spring-boot资料

    spring-boot-admin的相关资料 This application provides a simple UI to administrate Spring Boot application ...

  4. kafka常用操作命令

    1.启动Kafka,其中">>/dev/null"表示将日志信息输出到"黑洞",其中"2>&1"表示将错误信息和前 ...

  5. oninput,onpropertychange,onchange的用法和区别【转载】

    1.前言 由于工作需要,需实现一个类似于微博输入框的功能,在用户动态输入文字的时候,修改提示“您还可以输入XX字”.如下图所示: 因此,稍微研究了一下oninput,onpropertychange, ...

  6. 转!!java反射机制

    Java 反射机制 基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的. 这种动态获取类的信息以及动态调用对象 ...

  7. php中高级基础知识点

    1. 基本知识点 HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 100   (继续) 请求者应当继续提出请求. 服务器返回此代码 ...

  8. 使用fragmenttabhost后,子fragment怎么获取ID?怎么用getSharedPreferences

    使用fragmenttabhost后,子fragment怎么获取ID?怎么用getSharedPreferences public View onCreateView(LayoutInflater i ...

  9. SCCM部署win7操作系统,系统盘为D盘

    SCCM部署win7操作系统,系统盘为D盘 1. 系统部署完毕之后是这样的 2.解决方案 解决分发干净Windows7操作系统盘符为”D”的方法也比较简单. 在SCCM管理控制台中,打开”软件库””操 ...

  10. shell中for循环

    shell中for循环总结 最常用的就是遍历操作某一类文件,比如批量建索引. for i in `ls` do samtools faidx $i done 注意:for末尾不需要冒号(:),循环的代 ...