//单调队列 //队列元素递增或递减 元素最多进队出队各一次 //应用:复杂度为o(n^2)的动态规划 可求最大最小值 #include#include #include #include #include #include using namespace std;int n,m,a[1000001];struct uio{ int minum,micnt;}mi[1000001];struct oiu{ int manum,macnt;}ma[1000001];void getmin(){ int h=1,t=0; for(int i=1;i =a[i]) t--; mi[++t].minum=a[i]; mi[t].micnt=i; } for(int i=m;i<=n;i++) { while(h<=t&&mi[t].minum>=a[i]) t--; mi[++t].minum=a[i]; mi[t].micnt=i; while(mi[h].micnt >n>>m; for(int i=1;i<=n;i++) cin>>a[i]; getmin(); getmax(); return 0;}