Skip to content

Commit 186dc3a

Browse files
Create Most Frequent Element.cpp
1 parent b163e39 commit 186dc3a

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <iostream>
2+
#include <vector>
3+
using namespace std;
4+
5+
int main()
6+
{
7+
int no_of_elements, no_of_queries;
8+
cin >> no_of_elements >> no_of_queries;
9+
10+
vector <int> A(no_of_elements + 5);
11+
for(int i = 1; i <= no_of_elements; i++)
12+
{
13+
cin >> A[i];
14+
}
15+
16+
vector <int> left_equal(no_of_elements + 1);
17+
for(int i = 1; i <= no_of_elements; i++)
18+
{
19+
left_equal[i] = (A[i] == A[i - 1] ? left_equal[i - 1] : i);
20+
}
21+
22+
vector <int> right_equal(no_of_elements + 1);
23+
for(int i = no_of_elements; i >= 1; i--)
24+
{
25+
right_equal[i] = (A[i] == A[i + 1] ? right_equal[i + 1]: i);
26+
}
27+
28+
for(int i = 1; i <= no_of_queries; i++)
29+
{
30+
int left, right, k;
31+
cin >> left >> right >> k;
32+
33+
int mid = left + (right - left)/2;
34+
int segment_left = max(left, left_equal[mid]);
35+
int segment_right = min(right, right_equal[mid]);
36+
int segment = segment_right - segment_left + 1;
37+
38+
cout << (segment < k ? -1 : A[mid]) << "\n";
39+
}
40+
41+
return 0;
42+
}

0 commit comments

Comments
 (0)