题解:

二分+树状数组

记录以下i在当前拍第几

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int a[N],f1[N],f2[N],n,m,x,y,num[N];
int js(int x)
{
int ans=;
for (;x;x-=x&-x)ans+=num[x];
return ans;
}
void inster(int x,int y)
{
for (;x<=n;x+=x&-x)num[x]+=y;
}
int cmp(int x,int y)
{
return a[x]<a[y];
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)scanf("%d",&a[i]),f1[i]=f2[i]=i;
sort(f1+,f1+n+,cmp);
for (int i=;i<=n;i++)f2[f1[i]]=i;
for (int i=;i<=n;i++)inster(i,a[f1[i]]-a[f1[i-]]);
while (m--)
{
scanf("%d%d",&x,&y);
if (x==)
{
if (js(n)<y){puts("");continue;}
int l=,r=n;
while (l<r)
{
int mid=(l+r)/;
if (y>js(mid))l=mid+;
else r=mid;
}
printf("%d\n",n-l+);
}
if (x==)
{
if (js(n)<y)continue;
int l=,r=n;
while (l<r)
{
int mid=(l+r)/;
if (y>js(mid))l=mid+;
else r=mid;
}
inster(l,-);
}
if (x==)
{
int l=,r=n,k=js(f2[y]);
while (l<r)
{
int mid=(l+r+)/;
if (k<js(mid))r=mid-;
else l=mid;
}
swap(f1[f2[y]],f1[l]);
swap(f2[f1[f2[y]]],f2[f1[l]]);
inster(l,);
inster(l+,-);
}
}
}

spoj8406的更多相关文章

随机推荐

  1. 删除string类型字符串中指定字符串段

    1.实现背景 在插入list行时用邮件的MessageID给对应行命名. 在回复全部邮件时,收件人变为之前收件人中出去“自己”同时加入之前发件人,抄送人还是之前的抄送人,密送人不用管,直接不用带. 在 ...

  2. Python3基础 str format 输出花括号{}

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. PHP中namespace和use使用详解

    来源于:http://www.jb51.net/article/36389.htm 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种 ...

  4. BZOJ5170: Fable 树状数组

    Description 有这么一则传闻,O(nlogn)的排序发明之前,滋滋国的排序都是采用的冒泡排序.即使是冒泡排序,对当时的国民 来说也太复杂太难以理解,于是滋滋国出现了这样一个职业——排序使,收 ...

  5. [oracle复习] - Oracle

    https://deadzq.github.io/oracle/Oracle.html 我的oracle笔记1 https://deadzq.github.io/oracle/Oracle2.html ...

  6. makefile 中的符号替换($@、$^、$<、$?)

    Makefile  $@, $^, $< $@  表示目标文件$^  表示所有的依赖文件$<  表示第一个依赖文件$?  表示比目标还要新的依赖文件列表 如一个目录下有如下文件: $ ls ...

  7. 样本打散后计算单特征 NDCG

    单特征 NDCG 能计算模型的 NDCG,也就能计算单特征的 NDCG,用于评估单特征的有效性,跟 Group AUC 用途一样 单特征 NDCG 如何衡量好坏 如果是 AUC,越大于或小于 0.5, ...

  8. ubuntu server 多网卡

    https://wenku.baidu.com/view/51fb15742f60ddccdb38a007.html

  9. Java成神之路技术整理

    关于 Java 的技术干货,从以下几个方面汇总. Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 ...

  10. (转)c++一些知识点

    异常详解: https://www.cnblogs.com/hdk1993/p/4357541.html#top 模版详解: https://blog.csdn.net/lezardfu/articl ...