const int N =5e4+5;
int t;int n, m;int tree[N];
void add(int k, int num)
{
for (int i = k;i <= n; i += i & -i)
tree[i] += num;
}
int read(int k)
{
int sum = 0;
for (int i = k;i > 0; i -= i & -i)
sum += tree[i];
return sum;
}
bool vis[N];
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
//freopen("in.txt", "r", stdin);
while (cin >> n >> m)
{
memset(tree, 0, sizeof tree);
f(i, 1, n)add(i, 1);
string op;int x;
stack<int> st;
memset(vis, false, sizeof vis);
while (m--)
{
cin >> op;
if (op == "D")
{
cin >> x;
if (!vis[x])
{
add(x, -1);
st.push(x);
vis[x] = true;
}
}
else if (op == "R")
{
if (st.empty())continue;
int now = st.top();st.pop();
if (vis[now])
{
vis[now] = false;
add(now, 1);
}
}
else
{
cin >> x;
if (vis[x])printf("0\n");
else
{
int le, re;
int l = 1, r = x;
while (l <= r)
{
int mid = l + r >> 1;
if (read(x) - read(mid-1) == x - mid+1) { le = mid;r = mid - 1; }
else l = mid + 1;
}
l = x, r = n;
while (l <= r)
{
int mid = l + r >> 1;
if (read(mid) - read(x - 1) == mid - x + 1) { re = mid;l = mid + 1; }
else r = mid - 1;
}
printf("%d\n", re - le + 1);
}
}
}
}
return 0;
}
本文地址:https://blog.csdn.net/qq_43543086/article/details/107120762
如对本文有疑问, 点击进行留言回复!!
【Appium踩坑】小米手机,启动报错:exited with code 255 writing to settings requires:android.permission.WRITE_SECUR
android 拍照 预览图与 照片分辨率(可视区域)不一致
[PAT顶级]1025 Keep at Most 100 Characters (35分)
Android 天气APP(二十)增加欢迎页及白屏黑屏处理、展示世界国家/地区的城市数据
Android使用SharedPreferences保存List列表数据
解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题
Android studio 中基于c++的OpenCV 配置
网友评论