http://poj.org/problem?id=2823

#include <cstdio>#include <vector>#include <algorithm>#define For(i,a,b) for (int i=a;i<=b;++i)using namespace std;int n,m,a[10001],j,p,id[10001];int main(){scanf("%d%d", &n, &m);For(i,1,n)scanf("%d", &a[i]);id[1] = 1;j = 1;p = 0;For(i,2,n){if (p==j-1) {id[++p] = i;continue;}while (a[i]<=a[id[p]] && p>=j) p--;id[++p] = i;if (id[j]==i-m) j++;if(i>=m) printf("%d ", a[id[j]]);}printf("\n");id[1] = 1;j = 1;p = 0;For(i,2,n){if (p==j-1) {id[++p] = i;continue;}while (a[i]>=a[id[p]] && p>=j) p--;id[++p] = i;if (id[j]==i-m) j++;if(i>=m) printf("%d ", a[id[j]]);}return 0;}

#include <cstdio>#include <vector>#include <algorithm>#define For(i,a,b) for (int i=a;i<=b;++i)using namespace std;int n,m,a[10001],j,p,id[10001];int main(){scanf("%d%d", &n, &m);For(i,1,n)scanf("%d", &a[i]);id[1] = 1;j = 1;p = 0;For(i,2,n){if (p==j-1) {id[++p] = i;continue;}while (a[i]<=a[id[p]] && p>=j) p--;id[++p] = i;if (id[j]==i-m) j++;if(i>=m) printf("%d ", a[id[j]]);}printf("\n");id[1] = 1;j = 1;p = 0;For(i,2,n){if (p==j-1) {id[++p] = i;continue;}while (a[i]>=a[id[p]] && p>=j) p--;id[++p] = i;if (id[j]==i-m) j++;if(i>=m) printf("%d ", a[id[j]]);}return 0;}