poj 2823 二分法+单调队列
#include<stdio.h>
#include<string.h>
#define N 1100000
int a[N];
int fmin[N],fmax[N];
int tmin[N],tmax[N];
int dicmax(int l,int r,int f[],int k) {
int mid;
while(l<=r) {
mid=(l+r)/2;
if(k>=f[mid])//
r=mid-1;
else
l=mid+1;
}
return l;//这里的r返回第一个大于k的数的位置-1
}
int dicmin(int l,int r,int f[],int k) {
int mid;
while(l<=r) {
mid=(l+r)/2;
if(k<=f[mid])
r=mid-1;
else
l=mid+1;
}
return l;//
}
int main() {
int n,k,i,j,front,end;
while(scanf("%d%d",&n,&k)!=EOF) {
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
front=end=1;
fmin[front]=a[1];
tmin[front]=1;
for(i=2;i<=k;i++) {
end=dicmin(front,end,fmin,a[i]);
// printf("%d\n",end);
fmin[end]=a[i];
tmin[end]=i;
}
printf("%d",fmin[front]);
for(i=k+1;i<=n;i++) {
end=dicmin(front,end,fmin,a[i]);
fmin[end]=a[i];
tmin[end]=i;
while(tmin[front]<i-k+1&&front<=end)
front++;
printf(" %d",fmin[front]);
}
printf("\n");
front=end=1;
fmax[1]=a[1];
tmax[1]=1;
for(i=2;i<=k;i++) {
end=dicmax(front,end,fmax,a[i]);
fmax[end]=a[i];
tmax[end]=i;
}
printf("%d",fmax[front]);
for(i=k+1;i<=n;i++) {
end=dicmax(front,end,fmax,a[i]);
fmax[end]=a[i];
tmax[end]=i;
while(tmax[front]<i-k+1&&front<=end)
front++;
printf(" %d",fmax[front]);
}
printf("\n");
}
return 0;}
最新文章
- 【探索】无形验证码 —— PoW 算力验证
- hadoop 2.4 遇到的问题
- Day3-python基础3
- 【转载】C++中public,protected,private访问
- G - YY&#39;s new problem(HUSH算法,目前还不懂什么是HUSH算法)
- C#中sizeof的用法实例分析
- CodeForces 164A Variable, or There and Back Again 搜索
- Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
- 实验一:c++简单程序设计(1)
- 第二次Scrum冲刺——Life in CCSU
- MDK编译过程
- spring,springmvc,mybatis整合ssm框架出现ORA-02289:序列不存在问题
- Ubuntu fcitx CPU占用率很高解决方法
- js时间戳如何转时间
- Nhibernate + MySQL 类型映射
- 使用pyspark模仿sqoop从oracle导数据到hive的主要功能(自动建表,分区导入,增量,解决数据换行符问题)
- 【Verilog】verilog实现奇数次分频
- 20145118 《Java程序设计》第1周学习总结
- Windows pip安装失败:no module named pkg_resources
- 基于OpenSSL的RSA加密应用(非算法)
热门文章
- React实战之Ant Design—Upload上传_附件上传
- Java多线程(六)守护进程
- linux编译安装gcc5.3.0
- 暴力+构造 Codeforces Round #283 (Div. 2) C. Removing Columns
- magento “Model collection resource name is not defined” 错误
- 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案
- Linux下磁盘分区、挂载、卸载操作记录
- Android 性能优化(12)网络优化( 8)Monitoring the Battery Level and Charging State
- jquery实现文字自动向上滚动,鼠标放上去停止,移开继续滚动代码...
- EasyUI系列学习(五)-Resizable(调整大小)