此代码同hdu2665改编
#include <iostream>
#include <cstdio>
#include<cstring>
#include <algorithm>
using namespace std; #define N 100500 #define MID ((l+r)>>1)
int a[N],s[N],t[][N],num[][N],n,m; void Build(int c,int l,int r)
{
int lm=MID-l+,lp=l,rp=MID+;
for(int i=l;i<=MID;i++)
lm-=s[i]<s[MID];
for(int i=l;i<=r;i++)
{
if( i==l )
num[c][i]=;
else
num[c][i]=num[c][i-];
if( t[c][i]==s[MID] )
{
if( lm )
{
lm--;
num[c][i]++;
t[c+][lp++]=t[c][i];
}
else
t[c+][rp++]=t[c][i];
}
else if( t[c][i]<s[MID] )
{
num[c][i]++;
t[c+][lp++]=t[c][i];
}
else
t[c+][rp++]=t[c][i];
}
if( l<r )
Build(c+,l,MID),Build(c+,MID+,r);
} int Query(int c,int l,int r,int ql,int qr,int k)
{
if( l==r )
return t[c][l];
int s,ss;
if( l==ql )
s=,ss=num[c][qr];
else
s=num[c][ql-],ss=num[c][qr]-num[c][ql-];
if( k<=ss )
return Query(c+,l,MID,l+s,l+s+ss-,k);
else
return Query(c+,MID+,r,MID++ql-l-s,MID++qr-l-s-ss,k-ss);
} int main()
{
scanf("%d%d",&n,&m);
memset(t,,sizeof(t));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
s[i]=t[][i]=a[i];
}
sort(s+,s++n);
Build(,,n);
while( m-- )
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
printf("%d\n",Query(,,n,l,r,k));
} return ;
}

最新文章

  1. juery学习6——焦点事件
  2. ABP理论学习之数据过滤器
  3. ABP理论学习之审计日志
  4. MariaDB的GTID复制和多源复制
  5. CMMI整体理解
  6. AI
  7. 腾讯QQ、新浪微博等知名社交网络图标素材
  8. 更好地认知Azure
  9. MVC 中使用 SignalR 实现推送功能
  10. C语言学习之路,第一篇章。
  11. Centos7下建立rubymine快捷方式到侧栏或桌面
  12. oracle索引(转)
  13. C# readonly
  14. OpenCV探索之路(四):膨胀、腐蚀、开闭运算
  15. openwrt 编译
  16. JAVA的三个版本EE,SE,ME
  17. Ansible系列(四):playbook应用和roles自动化批量安装示例
  18. Web App 和 Native App,哪个是趋势?
  19. 创建sequence和触发器出现权限不足
  20. 没有任何秘密的 API:Vulkan* 简介

热门文章

  1. Java基础50题test1—不死神兔
  2. Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)
  3. HDinsight 系列-使用证书登陆中国区Azure
  4. SAP C/4HANA到底包含哪些产品?
  5. aspose.cell 给excel表格设置样式
  6. java里面byte数组和String字符串怎么转换
  7. 如何 Scale Up/Down Deployment?【转】
  8. BCB:内存泄漏检查工具CodeGuard
  9. #include &lt;&gt; 和 #inlude &quot;&quot;的区别
  10. k8s master init and add node