社区讨论
样例未过,20分求调
P1801黑匣子参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi8pgym6
- 此快照首次捕获于
- 2025/11/21 18:16 4 个月前
- 此快照最后确认于
- 2025/11/21 19:51 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int m,n,a[200005],b[200005],cnt;
void push_up(int p){
while (p>1){
if (a[p/2]<a[p]) break;
swap(a[p/2],a[p]);
p/=2;
}
return;
}
void push_down(int p){
cout << a[p] << endl;
swap(a[cnt],a[1]);
a[cnt] = 0;
cnt --;
int k = 2*p;
while (k <= cnt){
if (k+1<=cnt&&a[k+1]<a[k]) k++;
if(a[k]<a[p]) swap(a[k],a[p]);
else break;
p = k;
k *= 2;
}
return;
}
int main (){
cin >> m >> n;
for (int i = 1;i <= m;i ++) {
cin >> a[++cnt];
push_up(cnt);
}
for (int i = 1;i <= n;i ++){
cin >> b[i];
push_down(1);
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...