Skip to content

Commit 6e1c496

Browse files
committed
Add problems
1 parent be9c054 commit 6e1c496

File tree

3 files changed

+102
-65
lines changed

3 files changed

+102
-65
lines changed

sliding_median.cpp

Lines changed: 0 additions & 65 deletions
This file was deleted.
File renamed without changes.
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long int li;
6+
typedef long long int lli;
7+
typedef vector<long long int> vlli;
8+
typedef pair<lli, lli> plli;
9+
typedef vector<int> vi;
10+
typedef stack<long long int> slli;
11+
12+
void task()
13+
{
14+
15+
lli lenStream;
16+
cin >> lenStream;
17+
priority_queue<lli> maxHeap;
18+
priority_queue<lli, vector<lli>, greater<lli>> minHeap;
19+
20+
lli currentMedian = 0;
21+
22+
lli number;
23+
24+
vector<lli> ans;
25+
26+
cin >> currentMedian;
27+
lenStream--;
28+
ans.emplace_back(currentMedian);
29+
30+
while (lenStream--)
31+
{
32+
33+
cin >> number;
34+
35+
if (maxHeap.size() > minHeap.size())
36+
{
37+
38+
if (number < currentMedian)
39+
{
40+
minHeap.push(maxHeap.top());
41+
maxHeap.pop();
42+
maxHeap.push(number);
43+
}
44+
else
45+
{
46+
minHeap.push(number);
47+
}
48+
49+
currentMedian = (lli)floor((maxHeap.top() + minHeap.top()) / 2.0);
50+
}
51+
else if (maxHeap.size() == minHeap.size())
52+
{
53+
54+
if (number < currentMedian)
55+
{
56+
57+
maxHeap.push(number);
58+
currentMedian = maxHeap.top();
59+
}
60+
else
61+
{
62+
minHeap.push(number);
63+
currentMedian = minHeap.top();
64+
}
65+
}
66+
else
67+
{
68+
69+
if (number > currentMedian)
70+
{
71+
72+
maxHeap.push(minHeap.top());
73+
minHeap.pop();
74+
minHeap.push(number);
75+
}
76+
else
77+
{
78+
maxHeap.push(number);
79+
}
80+
81+
currentMedian = (lli)floor((maxHeap.top() + minHeap.top()) / 2.0);
82+
}
83+
84+
ans.emplace_back(currentMedian);
85+
}
86+
87+
for(auto num: ans) {
88+
cout<<num<<'\n';
89+
}
90+
91+
}
92+
93+
int main()
94+
{
95+
96+
ios::sync_with_stdio(0);
97+
cin.tie(0);
98+
99+
task();
100+
101+
return 0;
102+
}

0 commit comments

Comments
 (0)