社区讨论
代码好多重复,不过可以copy
P1886【模板】单调队列 / 滑动窗口参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mivbja2b
- 此快照首次捕获于
- 2025/12/07 14:05 2 个月前
- 此快照最后确认于
- 2025/12/07 14:14 2 个月前
debug好久,如果是考试会死的很惨。
CPP#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
ll n,k;
ll a[1500000];
ll minn = 99999999999999;
ll m_p = -1;
ll maxx = -99999999999999;
ll max_pos = -1;
void s() {
for (int i = 2; i <= n-k + 1;i++) {
if (minn > a[i + k - 1]) {
minn = a[i + k - 1];
m_p = i+k-1;
}else {
if (m_p == i-1) {
minn = 99999999999;
for (int j = i; j < i+k;j++) {
if (minn >= a[j]) {
minn = a[j];
m_p = j;
}
}
}
}
cout<<minn<<" ";
}
}
void m() {
for (int i = 2; i <= n-k + 1;i++) {
if (maxx < a[i + k - 1]) {
maxx = a[i + k - 1];
max_pos = i+k-1;
}else {
if (max_pos == i-1) {
maxx = -99999999999;
for (int j = i; j < i+k;j++) {
if (maxx <= a[j]) {
maxx = a[j];
max_pos = j;
}
}
}
}
cout<<maxx<<" ";
}
}
void solve() {
cout<<minn<<" ";
s();
cout<<endl;
cout<<maxx<<" ";
m();
}
int main() {
cin >> n >> k;
for (int i = 1; i <=n;i++) {
cin >> a[i];
if (i <= k) {
if (maxx <= a[i]) {
maxx = a[i];
max_pos = i;
}
if (minn >= a[i]) {
minn = a[i];
m_p = i;
}
}
}
solve();
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...