题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5170

  我们会发现,经过一轮冒泡后,若a[i]的前面有比它大的数,就一定会有一个被丢到后面去,即a[i]会前移一位。而那些前面没有能被丢的数,它们是按照顺序从小到大排序好的。于是我们可以用树状数组处理出在他前面比他大的数个数>=k的数先插到前移k位的位置上,然后剩下的数从小到大插进空位。

  代码:

#include<cstdio>
#include<algorithm>
#define ll long long
#define maxn 200010
ll read()
{
ll x=; char f=,c=getchar();
for(;c<''||''<c;c=getchar())f=(c=='-'?:f);
for(;''<=c&&c<='';c=getchar())x=x*+c-'';
return f?x:-x;
}
using namespace std;
int bit[maxn];
struct data{
int x,id;
}a[maxn];
int rk[maxn],f[maxn],ans[maxn];
int n,k;
bool cmp(data a,data b){return a.x<b.x;}
void add(int x,int k){for(;x<=n;x+=x&(-x))bit[x]+=k;}
int getsum(int x){int sum=; for(;x;x-=x&(-x))sum+=bit[x]; return sum;}
int main()
{
n=read(); k=read();
for(int i=;i<=n;i++)
a[i].x=read(),a[i].id=i;
sort(a+,a+n+,cmp);
// for(int i=1;i<=n;i++)
// printf("%d %d %d\n",i,a[i].x,a[i].id);
rk[a[].id]=;
for(int i=;i<=n;i++)
if(a[i].x==a[i-].x)rk[a[i].id]=rk[a[i-].id];
else rk[a[i].id]=i;
for(int i=;i<=n;i++){
add(rk[i],);
f[i]=getsum(n)-getsum(rk[i]);
if(f[i]>k)ans[i-k]=a[rk[i]].x;
}
int tmp=;
for(int i=;i<=n;i++)
if(f[a[i].id]<=k){
while(tmp<=n&&ans[tmp])++tmp;
ans[tmp]=a[i].x;
}
for(int i=;i<=n;i++)
printf("%d\n",ans[i]);
// for(int i=1;i<=n;i++)
// printf("%d %d %d\n",i,rk[i],f[i]);
}

bzoj5170

最新文章

  1. hammer.js的六大事件
  2. [Linux]系统调用理解(1)
  3. Web.config配置文件详解
  4. 国内外做MySQL的公司
  5. SparkStreaming入门及例子
  6. java基础面试题(转)
  7. Js Pattern - Self Define Function
  8. 解决“重新安装vmware-tools”灰色而无法安装的问题
  9. linux循环递归设置权限
  10. Hibernate3 第三天
  11. nyoj 阶乘0
  12. springboot~zuul实现网关
  13. [C#] .NET Core/Standard 1.X 项目中如何使用XmlIgnoreAttribute等标准范围外的内容,兼谈如何解决“violation of security transparency rules failed”(违反安全透明规则失败)异常
  14. L1 与 L2 正则化
  15. 搭建ZooKeeper
  16. 统计代码执行时间,使用Stopwatch和UserProcessorTime的区别
  17. dirname命令详解
  18. Spring Boot 集成 GRPC
  19. 使用PowerShell创建SSAS Role
  20. ionic开发环境搭建之ios

热门文章

  1. Request.getRequestURL
  2. WEB安全番外第一篇--其他所谓的“非主流”漏洞:URL跳转漏洞与参数污染
  3. 如何学习 cocos2d-x ?
  4. Windows Phone 页面切换动画
  5. linux下nproc的作用
  6. shell脚本抓取网页信息
  7. datatables如何让某个列中的值居中显示?
  8. onethink文章详情如何做上一篇和下一篇!
  9. OneThink生成分类树方法(list_to_tree)使用!
  10. Session的存储原理