xeri_chen @ 2019-06-10 21:52:33
#include<bits/stdc++.h>
#define N 2000001
using namespace std;
deque <int> dq;
deque <int> dq2;
int a[N],k,d[N],top;
void tj2(int x)
{
while(!dq2.empty()&&a[dq2.back()]>a[x])
{
dq2.pop_back();
}
while(!dq2.empty()&&x-dq2.front()>=k)
{
dq2.pop_front();
}
dq2.push_back(x);
}
void tj(int x)
{
while(!dq.empty()&&a[dq.back()]<a[x])
{
dq.pop_back();
}
while(!dq.empty()&&x-dq.front()>=k)
{
dq.pop_front();
}
dq.push_back(x);
}
int main()
{
int n;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
tj(i);
tj2(i);
if(i>=k-1)
{
cout<<a[dq2.front()]<<" ";
d[top++]=a[dq.front()];
}
}
cout<<endl;
for(int i=0;i<top;i++)
cout<<d[i]<<" ";
return 0;
}
by xeri_chen @ 2019-06-10 22:06:28
谢谢大佬,换成scanf和printf就过了。之前从来没有遇到过这种情况,受教了
by zhangyuzhe @ 2019-06-10 22:07:29
@xeri_chen,cin、cout尽管用,只要在加上这句话就可以了。ios::sync_with_stdio(false);
by xeri_chen @ 2019-06-10 22:07:53
@baoyu 谢谢
by xeri_chen @ 2019-06-10 22:08:12
@光随影走 谢谢
by xeri_chen @ 2019-06-10 22:08:33
@wxwoo 谢谢
by xeri_chen @ 2019-06-10 22:09:32
@2017BeiJiang 是不是加了以后就不能用scanf,printf了
by 梧桐灯 @ 2019-06-10 22:10:10
@xeri_chen 建议快读啊,参见日报
by zhangyuzhe @ 2019-06-10 22:10:16
不是啊,一样可以用,您可以去百度上搜一下这句话的意思
by wkywkywky @ 2019-06-10 22:23:29
@2017BeiJiang 不可以
by first_fan @ 2019-06-10 22:26:26
cin & cout
由于自动识别类型,耗时约为scanf & printf
的上百倍。
@xeri_chen