蒙一勾股之父——王皓 • 1年前
#include <bits/stdc++.h>
using namespace std;
const int N = 1000050;
int n, k;
long long a[N];
long long maxn = -2147483650, minn = 2147483650, mmax[N], mmin[N];
int main() {
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
if (i <= k && maxn < a[i]) {
maxn = a[i];
}
if (i <= k && minn > a[i]) {
minn = a[i];
}
}
mmin[1] = minn;
mmax[1] = maxn;
for (int i = 2; i <= n - k + 1; i++) {
if (a[i - 1] == minn || a[i - 1] == maxn) {
maxn = -2147483650;
minn = 2147483650;
for (int j = 0; j < k; j++) {
if (maxn < a[j + i]) {
maxn = a[j + i];
}
if (minn > a[j + i]) {
minn = a[j + i];
}
}
mmin[i] = minn;
mmax[i] = maxn;
} else {
if (maxn < a[i + k - 1]) {
maxn = a[i + k - 1];
}
if (minn > a[i + k - 1]) {
minn = a[i + k - 1];
}
mmin[i] = minn;
mmax[i] = maxn;
}
}
for (int i = 1; i <= n - k + 1; i++) {
printf("%d ", mmin[i]);
}
printf("\n");
for (int i = 1; i <= n - k + 1; i++) {
printf("%d ", mmax[i]);
}
return 0;
}
评论:
请先登录,才能进行评论