#include<cstdio>
#include<algorithm>
const int N = 1e6 + 5;
using std::make_heap;
using std::pop_heap;
using std::push_heap;
int n,a[N],b[N];
int cnt, t, ida, idb;
int sr[N];
void push(int x, int p) {
if(p == 0){
a[ida++] = x;
push_heap(a, a + ida);
}
else{
b[idb++] = x;
push_heap(b, b + idb);
}
return ;
}
void pop(int p) {
if (p == 0) pop_heap(a, a + (ida--));
else pop_heap(b, b + (idb--));
return ;
}
int main(){
scanf("%d",&n);
for(int i = 1;i <= n; i++){
scanf("%d",&sr[i]);
}
int P = (sr[1] + sr[2]) >> 1;
if(n >= 2) printf("%d\n%d\n", sr[1] , P);
else printf("%d\n", sr[1]);
if (sr[1] >= sr[2]){
push(-sr[1], 1),push(sr[2], 0);
}
else{
push(-sr[2], 1),push(sr[1], 0);
}
for(int i = 3; i <= n; i++){
t = sr[i];
if (ida == idb){
if(t > -b[0]){
push(-b[0], 0);
pop(1);
push(-t, 1);
}
else push(t, 0);
}
else{
if(t < a[0]) {
push(-a[0], 1);
pop(0);
push(t, 0);
}
else push(-t, 1);
}
if(i % 2 == 1){
printf("%d\n", a[0]);
}
else{
printf("%d\n", (a[0] + (-b[0])) >> 1);
}
}
return 0;
}
【无标题】
最新推荐文章于 2024-10-11 12:01:25 发布