Skip to content

Commit e8c527f

Browse files
committed
Added problems
1 parent 5ac7502 commit e8c527f

File tree

3 files changed

+94
-5
lines changed

3 files changed

+94
-5
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
typedef long long int lli;
6+
typedef vector<lli> vlli;
7+
typedef tuple<lli, lli> ii;
8+
typedef tuple<lli, lli, lli> iii;
9+
10+
void task()
11+
{
12+
13+
lli lenNumbers, lenWindow;
14+
cin >> lenNumbers >> lenWindow;
15+
16+
vector<lli> res;
17+
18+
vector<lli> numbers;
19+
20+
multiset<lli> minHeap;
21+
multiset<lli, greater<lli>> maxHeap;
22+
23+
lli number;
24+
lli currentMedian = 0;
25+
26+
for (lli i = 0; i < lenNumbers; i++)
27+
{
28+
cin >> number;
29+
numbers.emplace_back(number);
30+
31+
if (i >= lenWindow)
32+
{
33+
34+
lli cost = 0;
35+
36+
for (lli j = i - lenWindow; j < i; j++)
37+
{
38+
cost += abs(numbers[j] - currentMedian);
39+
}
40+
41+
res.emplace_back(cost);
42+
43+
lli toBeRemoved = numbers[i - lenWindow];
44+
if (toBeRemoved <= currentMedian)
45+
{
46+
maxHeap.erase(maxHeap.find(toBeRemoved));
47+
}
48+
else
49+
{
50+
minHeap.erase(minHeap.find(toBeRemoved));
51+
}
52+
}
53+
54+
maxHeap.insert(number);
55+
minHeap.insert(*maxHeap.begin());
56+
maxHeap.erase(maxHeap.begin());
57+
if (maxHeap.size() < minHeap.size())
58+
{
59+
maxHeap.insert(*minHeap.begin());
60+
minHeap.erase(minHeap.begin());
61+
}
62+
currentMedian = *maxHeap.begin();
63+
}
64+
65+
lli cost = 0;
66+
67+
for (lli j = lenNumbers - lenWindow; j < lenNumbers; j++)
68+
{
69+
cost += abs(numbers[j] - currentMedian);
70+
}
71+
72+
res.emplace_back(cost);
73+
74+
for (auto r : res)
75+
{
76+
cout << r << ' ';
77+
}
78+
79+
cout << '\n';
80+
}
81+
82+
int main()
83+
{
84+
85+
ios::sync_with_stdio(false);
86+
cin.tie(NULL);
87+
88+
task();
89+
90+
return 0;
91+
}
File renamed without changes.

template.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
using namespace std;
44

5-
typedef long int li;
65
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;
6+
typedef vector<lli> vi;
7+
typedef tuple<lli, lli> ii;
8+
typedef tuple<lli, lli, lli> iii;
119

1210
void task() {
1311

0 commit comments

Comments
 (0)