0分代码求助……
查看原帖
0分代码求助……
139509
liufukang楼主2020/12/30 21:17
#include<bits/stdc++.h>
using namespace std;
const int maxN=1e6+10;
deque<int>q;
int n,k,a[maxN];
int read();
void write(int),work(int);
int main(){
	n=read();k=read();
	for (int i=1;i<=n;i++) a[i]=read();//读入
	work(1);//最小值
	work(-1);//最大值
	return 0;
}
inline void work(int t){
	q.clear();//清空队列
	for (int i=1;i<=n;i++){
		while (!q.empty()&&q.front()<=i-k) q.pop_front();
		while (!q.empty()&&a[q.back()]*t>=a[i]*t) q.pop_back();
		q.push_back(i);
		if (i>=k) write(a[q.front()]),putchar(' ');
	}
	puts("");
}
inline int read(){
	int s=0,f=1;
	char ch=getchar();
	while (!isdigit(ch)){
		if (ch=='-') f=-1;
		ch=getchar();
	}
	while (isdigit(ch)){
		s=s*10+(ch-'0');
		ch=getchar();
	}
	return s*f;
}//快读
inline void write(int x){
	if (x<0){
		putchar('-');
		x=-x;
	}
	if (x>9){
		write(x/10);
		putchar(x%10+'0');
	}
	putchar(x+'0');
}//快写

在线等待大佬神助Orz

2020/12/30 21:17
加载中...