1
class Solution {
2
public:
3
vector<int> threeEqualParts(vector<int> &v) {
4
vector<int> one;
5
int n = v.size();
6
for (int i = 0; i < n; i++) {
7
if (v[i] == 1) one.push_back(i + 1);
8
}
9
if (one.size() == 0) {
10
return {0, 2};
11
}
12
if (one.size() % 3) return {-1, -1};
13

14
int ext = n - one.back(), sz = one.size();
15
int gap1 = one[sz / 3] - one[sz / 3 - 1] - 1, gap2 = one[2 * sz / 3] - one[2 * sz / 3 - 1] - 1;
16
// cout<<gap1<<" "<<gap2<<endl;
17
if (gap1 < ext || gap2 < ext) return {-1, -1};
18

19
string s1, s2, s3;
20
for (int i = 0; i <= one[sz / 3 - 1] + ext - 1; i++) {
21
if (s1.length() > 0 || v[i]) s1 += to_string(v[i]);
22
}
23

24
for (int i = one[sz / 3 - 1] + ext; i <= one[2 * sz / 3 - 1] + ext - 1; i++) {
25
if (s2.length() > 0 || v[i]) s2 += to_string(v[i]);
26
}
27

28
for (int i = one[2 * sz / 3 - 1] + ext; i <= n - 1; i++) {
29
if (s3.length() > 0 || v[i]) s3 += to_string(v[i]);
30
}
31
// All 3 Numbers in vector v :-
32
// num1={0,one[sz/3-1]+ext-1};
33
// num2={one[sz/3-1]+ext,one[2*sz/3-1]+ext-1}
34
// num3={one[2*sz/3-1]+ext,n-1};
35
if (s1 == s2 && s2 == s3) return {one[sz / 3 - 1] + ext - 1, one[2 * sz / 3 - 1] + ext};
36
return {-1, -1};
37
}
38
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0