3
vector<int> threeEqualParts(vector<int> &v) {6
for (int i = 0; i < n; i++) {7
if (v[i] == 1) one.push_back(i + 1);12
if (one.size() % 3) return {-1, -1};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};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]);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]);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]);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};