Untitled
unknown
plain_text
a year ago
1.8 kB
9
Indexable
#include <bits/stdc++.h>
using namespace std;
#define pfi(a) printf("%d", a);
#define pfl(a) printf("%lld", a);
#define pfin(a) printf("%d\n", a);
#define pfln(a) printf("%lld\n", a);
#define pfis(a) printf("%d ", a);
#define pfls(a) printf("%lld ", a);
#define sfi(a) scanf("%d", &a);
#define sfl(a) scanf("%lld", &a);
#define fast \
ios_base::sync_with_stdio(false); \
cin.tie(NULL); \
cout.tie(NULL)
#define f(i, a, b) for (int i = a; i < b; i++)
#define pb(a) push_back(a);
#define mp(a, b) make_pair(a, b)
#define ll long long
#define F first
#define S second
priority_queue<int, vector<int>, greater<int> > minheap;
priority_queue<int, vector<int> > maxheap;
void insert(int x) {
if (minheap.size() == maxheap.size()) {
if (maxheap.size() == 0) {
maxheap.push(x);
return;
}
if (x < maxheap.top()) {
maxheap.push(x);
} else {
minheap.push(x);
}
}
else {
if (maxheap.size() > minheap.size()) {
if (x >= maxheap.top()) {
minheap.push(x);
} else {
int temp = maxheap.top();
maxheap.pop();
maxheap.push(x);
minheap.push(temp);
}
}
else {
if (x <= minheap.top()) {
maxheap.push(x);
} else {
int temp = minheap.top();
minheap.pop();
minheap.push(x);
maxheap.push(temp);
}
}
}
}
double findmedian() {
if (maxheap.size() == minheap.size()) {
return (maxheap.top() + minheap.top()) / 2;
} else {
if (maxheap.size() > minheap.size()) {
return maxheap.top();
} else {
return minheap.top();
}
}
}
int main() {
insert(10);
insert(1);
findmedian();
insert(2);
findmedian();
insert(3);
insert(11);
findmedian();
return 0;
}Editor is loading...
Leave a Comment