偏移量要考虑清楚。

#include <bits/stdc++.h>
using namespace std; const int N=4e5+10;
const int BASE=1e5+1;
const int RIGHT=3e5+5e4; int segtree[N<<2],lazy[N<<2]; void pushdown(int rt)
{
if (lazy[rt]) {
lazy[rt<<1]=lazy[rt<<1|1]=1;
segtree[rt<<1]=segtree[rt<<1|1]=0;
lazy[rt]=0;
}
} void Update(int val,int l,int r,int rt)
{
if (l==r) {
segtree[rt]++;
return ;
}
pushdown(rt);
int mid=(r+l)>>1;
if (val<=mid) {
Update(val,l,mid,rt<<1);
}
else {
Update(val,mid+1,r,rt<<1|1);
}
segtree[rt]=segtree[rt<<1]+segtree[rt<<1|1];
} void Delete(int L,int R,int l,int r,int rt)
{
if (L<=l&&r<=R) {
lazy[rt]=1;
segtree[rt]=0;
return ;
}
pushdown(rt);
int mid=(l+r)>>1;
if (L<=mid) {
Delete(L,R,l,mid,rt<<1);
}
if (mid<R) {
Delete(L,R,mid+1,r,rt<<1|1);
}
segtree[rt]=segtree[rt<<1]+segtree[rt<<1|1];
} int Query(int val,int l,int r,int rt)
{
if (l==r) {
return l;
}
pushdown(rt);
int mid=(l+r)>>1;
if (segtree[rt<<1]>=val) {
return Query(val,l,mid,rt<<1);
}
else {
return Query(val-segtree[rt<<1],mid+1,r,rt<<1|1);
}
} int main()
{
char op[10];
int n,min_sal,tot=0,num,offset=0;
scanf("%d%d",&n,&min_sal);
for (int i=0;i<n;i++) {
scanf("%s%d",op,&num);
if (!strcmp(op,"I")) {
if (num>=min_sal) {
tot++;
Update(num+BASE+offset,1,RIGHT,1);
} }
else if (!strcmp(op,"A")) {
offset-=num;
}
else if (!strcmp(op,"S")) {
offset+=num;
Delete(1,BASE+min_sal-1+offset,1,RIGHT,1);
}
else {
Delete(1,BASE+min_sal-1+offset,1,RIGHT,1);
if (num>segtree[1]) {
puts("-1");
}
else {
printf("%d\n",Query(segtree[1]-num+1,1,RIGHT,1)-BASE-offset);
}
}
}
printf("%d\n",tot-segtree[1]);
return 0;
}

最新文章

  1. fixed数据类型
  2. pullToRefreshListView的简单使用
  3. Apache rewrite
  4. 使用sklearn进行集成学习——理论
  5. Android开发遇到的坑(1):Java中List的安全删除问题
  6. loadrunner备忘
  7. 【转】Android studio 解决64K超出链接数限制问题
  8. 我的conky配置
  9. VC++全局变量初始化
  10. urlrewrite伪静态 及多参数传递-附正则表达式语法 [轉]
  11. Where is the ActiveX Project Type for Delphi 10.1 Berlin
  12. 2014Esri全球用户大会——亮点系列之精彩应用案例
  13. LeetCode Javascript实现 283. Move Zeroes 349. Intersection of Two Arrays 237. Delete Node in a Linked List
  14. Pool:小对象缓存or复用
  15. Navicat 用ssh通道连接时总是报错 (报错信息:SSH:expected key exchange group packet form serve
  16. gateway + jwt 网关认证
  17. Kotlin入门
  18. Spring Security认证配置(三)
  19. go语言基础之append函数的使用
  20. backend community-driven web framework

热门文章

  1. Cleaning Data in R
  2. PHP 把秒数转为时分秒格式
  3. Spring Boot Post、Get接收Map
  4. php curl 发起get和post网络请求
  5. 在Unity3d中使用Google.ProtocolBuffers
  6. asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理
  7. Java-POJ1007-DNA Sorting
  8. 题解 【洛谷P1035】[NOIP2002普及组]级数求和
  9. 【音乐欣赏】《Abnormalize》 - 凛として時雨
  10. Ehab and a Special Coloring Problem