记录编号 308139 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 Gravatar森林 是否通过 通过
代码语言 C++ 运行时间 1.142 s
提交时间 2016-09-17 08:18:58 内存使用 7.06 MiB
显示代码纯文本
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<stdlib.h>
#include<string.h>
#include<functional>
#include<iomanip>
#include<math.h>
#define WJ(name) freopen(#name".in","r",stdin);freopen(#name".out","w",stdout);
#define JW fclose(stdin);fclose(stdout);
namespace mine{
	template<typename T>inline void QR(T& x){
		char ch;bool f=0;
		while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
		if(ch=='-')f=1,ch=getchar();x=ch-48;
		while(ch=getchar(),ch>='0'&&ch<='9')x=x*10+ch-48;
		if(f)x=-x;
	}
	template<typename T>inline void QW(T _num){
		if(_num<0)putchar('-'),_num=-_num;
		short __cnt=0;char _str[30];
		while(_str[++__cnt]=_num%10+'0',_num/=10);
		while(putchar(_str[__cnt]),--__cnt);
	}
}
using namespace std;
using namespace mine;
const int maxn=1000000;
int a[maxn],n,k,ans[maxn];
deque<int>qmax,qmin;
inline void insert(const int& k){
	while(!qmax.empty()&&a[qmax.back()]>a[k])qmax.pop_back();qmax.push_back(k);
	while(!qmin.empty()&&a[qmin.back()]<a[k])qmin.pop_back();qmin.push_back(k);
}
int main(){
	#define submit
	#ifdef submit
	WJ(window);
	#endif
	QR(n),QR(k);
	for(int i=1;i<=n;i++)QR(a[i]);
	for(int i=1;i<k;i++)insert(i);
	for(int i=1;i<=n-k+1;i++){
		insert(i+k-1);
		while(!qmax.empty()&&qmax.front()<i)qmax.pop_front();
		while(!qmin.empty()&&qmin.front()<i)qmin.pop_front();
		QW(a[qmax.front()]),putchar(' ');
		ans[i]=a[qmin.front()];
	}
	putchar(10);
	for(int i=1;i<=n-k+1;i++)QW(ans[i]),putchar(' ');
	#ifndef submit
	system("pause");
	#endif
	JW;
	return 0;
}