题意描述

您需要维护一个数据结构,支持以下三种操作:

  • L id:在现在序列的左边插一个编号为id的物品
  • R id:在现在序列的右边插一个编号为id的物品
  • ? id:查询该点左面有几个元素,右面有几个元素,并取min输出

输入输出格式:

输入格式:

第一行,一个整数q,表示操作数

下面q行,每行2个数,表示一个操作

输出格式

对于每个“?”操作,输出一行一个整数,表示答案

思路:

差点暴力上treap

水题一道

因为只有100000个数,所以我们可以维护一个大小为200000的数组以及lll,rrr两个指针

第一个数放在100000这个位置,每次往左放就l--,反之r++

把数填进去,同时写一个映射,将ididid映射为位置

当前位置−l-l−l为左面的数的数量,r−r-r−当前位置为右面的数的数量

然后输出即可

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
using namespace std;
int l,r,now,ys[];
int q;
int main()
{
scanf("%d\n",&q);
for(rii=;i<=q;i++)
{
char cz;
int id;
scanf("%c%d\n",&cz,&id);
if(i==)
{
ys[id]=;
l=;
r=;
continue;
}
if(cz=='L')
{
l--;
ys[id]=l;
}
if(cz=='R')
{
r++;
ys[id]=r;
}
if(cz=='?')
{
printf("%d\n",min(ys[id]-l,r-ys[id]));
}
}
}

最新文章

  1. JS学习之事件流
  2. 跨平台编程:关于VS和QT那些事
  3. OracleDBConsoleorcl是具体管什么的服务(转)
  4. Tomcat设置默认启动项目及Java Web工程设置默认启动页面
  5. 表单form的属性,单行文本框、密码框、单选多选按钮
  6. Quant面试准备5本书
  7. php文件读写锁
  8. OpenOffice的安装与启动2
  9. 重定位表 IMAGE_BASE_RELOCATION
  10. Windows 7/Vista 开机自动登录
  11. Python 2.7 学习笔记 字典(map)的使用
  12. 201521123098 《Java程序设计》第11周学习总结
  13. SpringMvc环境搭建(配置文件)
  14. 巧用Win+R
  15. Sharding-jdbc视频:当Sharding-jdbc遇到Spring Boot
  16. Python线程同步
  17. antd + node.js + mongoose小总结
  18. mysql连接时提示错误太多的解决
  19. jenkins构建配置
  20. 关闭文件描述符-close

热门文章

  1. 如何定位 Node.js 的内存泄漏
  2. 任务十四:零基础JavaScript编码(二)
  3. 微信小程序——组件(一)
  4. C#MD5笔记
  5. Azure DocumentDB 正式发布
  6. jquery事件绑定函数
  7. Linux下TC使用说明 &amp; 使用备注 ZZ
  8. LeetCode总结 -- 一维动态规划篇
  9. ZT Factory Pattern
  10. [译] 怎样(以及为什么要)保持你的 Git 提交记录的整洁