houzhiyuan @ 2020-04-17 07:20:59
第六个测试点WA了,是找最大值错了
#include<bits/stdc++.h>
using namespace std;
long long n,m,head,tail,a[1000001],q[1000001];
int main() {
cin>>n>>m;
tail=1;
head=1;
for(int i=1; i<=n; i++) {
cin>>a[i];
}
q[head]=1;
for(int i=2; i<m; i++) {
while(a[i]<a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=i;
}
for(int i=m; i<n; i++) {
if(i-q[head]==m) {
head++;
}
while(a[i]<a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=i;
cout<<a[q[head]]<<' ';
}
if(n-q[head]==m) {
head++;
}
while(a[n]<a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=n;
cout<<a[q[head]];
cout<<endl;
memset(q,0,sizeof(q));
q[head]=1;
tail=1;
head=1;
for(int i=2; i<m; i++) {
while(a[i]>a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=i;
}
for(int i=m; i<n; i++) {
if(i-q[head]==m) {
head++;
}
while(a[i]>a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=i;
cout<<a[q[head]]<<' ';
}
if(n-q[head]==m) {
head++;
}
while(a[n]>a[q[tail]]&&head<=tail) {
tail--;
}
q[++tail]=n;
cout<<a[q[head]];
return 0;
}
码风奇特,大佬勿喷
by impuk @ 2020-04-17 07:22:04
我是萌新,我不是大佬,所以,
喷
by zheysq_147 @ 2020-04-17 07:22:08
码风很好,比题解好多了
by houzhiyuan @ 2020-04-17 07:39:06
有人可以查一下错吗
by duyh1114 @ 2020-04-17 07:42:10
我是直接打了一个ST表
by Scrutiny @ 2020-04-17 07:53:38
我易易代码咋那么长
by sss7020 @ 2020-04-17 08:16:56
为什么一个单调队列这么长
by houzhiyuan @ 2020-04-17 11:02:58
因为行末的空格去掉了