# Split array in three equal sum subarrays

Here given code implementation process.

``````/*
C Program for
Split array in three equal sum subarrays
*/
#include <stdio.h>

//Splitting an array into three sum subarrays
void splitEqualSum(int arr[], int n)
{
int status = 1;
if (n < 3)
{
status = 0;
}
else
{
int sum = 0;
int auxiliary = 0;
// Loop controlling variables
int i = 0;
int j = 0;
// Calculate sum of all elements
for (i = 0; i < n; ++i)
{
sum += arr[i];
}
int point[2];
point[0] = -1;
point[1] = -1;
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (i = 0; i < n && j < 2; ++i)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
auxiliary = 0;
j++;
}
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
for (i = 0; i < n; ++i)
{
if (j < 2 && point[j] == i)
{
printf("\n");
j++;
}
printf(" %d", arr[i]);
}
}
else
{
// When not possible to split array into three equal sum
status = 0;
}
}
else
{
status = 0;
}
}
if (status != 1)
{
printf("\n Three subarray with equal sum are not possible \n");
}
}
int main()
{
int arr[] = {
5 , 2 , 7 , -5 , 7 , -1 , 3 , 4 , 5
};
// Get the size
int n = sizeof(arr) / sizeof(arr[0]);
splitEqualSum(arr, n);
return 0;
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````/*
Java Program for
Split array in three equal sum subarrays
*/
public class Partition
{
// Splitting an array into three sum subarrays
public void splitEqualSum(int[] arr, int n)
{
boolean status = true;
if (n < 3)
{
status = false;
}
else
{
int sum = 0;
int auxiliary = 0;
// Loop controlling variables
int i = 0;
int j = 0;
// Calculate sum of all elements
for (i = 0; i < n; ++i)
{
sum += arr[i];
}
int[] point = new int[2];
point[0] = -1;
point[1] = -1;
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (i = 0; i < n && j < 2; ++i)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j++;
}
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
for (i = 0; i < n; ++i)
{
if (j < 2 && point[j] == i)
{
System.out.print("\n");
j++;
}
System.out.print(" " + arr[i]);
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
System.out.print("\n Three subarray with equal sum are not possible \n");
}
}
public static void main(String[] args)
{
int []arr = {
5 , 2 , 7 , -5 , 7 , -1 , 3 , 4 , 5
};
// Get the size
int n = arr.length;
}
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````// Include header file
#include <iostream>

using namespace std;
/*
C++ Program for
Split array in three equal sum subarrays
*/
class Partition
{
public:
// Splitting an array into three sum subarrays
void splitEqualSum(int arr[], int n)
{
bool status = true;
if (n < 3)
{
status = false;
}
else
{
int sum = 0;
int auxiliary = 0;
// Loop controlling variables
int i = 0;
int j = 0;
// Calculate sum of all elements
for (i = 0; i < n; ++i)
{
sum += arr[i];
}
int point[2];
point[0] = -1;
point[1] = -1;
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (i = 0; i < n && j < 2; ++i)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j++;
}
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
for (i = 0; i < n; ++i)
{
if (j < 2 && point[j] == i)
{
cout << "\n";
j++;
}
cout << " " << arr[i];
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
cout << "\n Three subarray with equal sum are not possible \n";
}
}
};
int main()
{
int arr[] = {
5 , 2 , 7 , -5 , 7 , -1 , 3 , 4 , 5
};
// Get the size
int n = sizeof(arr) / sizeof(arr[0]);
return 0;
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````// Include namespace system
using System;
/*
C# Program for
Split array in three equal sum subarrays
*/
public class Partition
{
// Splitting an array into three sum subarrays
public void splitEqualSum(int[] arr, int n)
{
Boolean status = true;
if (n < 3)
{
status = false;
}
else
{
int sum = 0;
int auxiliary = 0;
// Loop controlling variables
int i = 0;
int j = 0;
// Calculate sum of all elements
for (i = 0; i < n; ++i)
{
sum += arr[i];
}
int[] point = new int[2];
point[0] = -1;
point[1] = -1;
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (i = 0; i < n && j < 2; ++i)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j++;
}
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
for (i = 0; i < n; ++i)
{
if (j < 2 && point[j] == i)
{
Console.Write("\n");
j++;
}
Console.Write(" " + arr[i]);
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
Console.Write("\n Three subarray with equal sum are not possible \n");
}
}
public static void Main(String[] args)
{
int[] arr = {
5 , 2 , 7 , -5 , 7 , -1 , 3 , 4 , 5
};
// Get the size
int n = arr.Length;
}
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````<?php
/*
Php Program for
Split array in three equal sum subarrays
*/
class Partition
{
// Splitting an array into three sum subarrays
public	function splitEqualSum( & \$arr, \$n)
{
\$status = true;
if (\$n < 3)
{
\$status = false;
}
else
{
\$sum = 0;
\$auxiliary = 0;
// Loop controlling variables
\$i = 0;
\$j = 0;
// Calculate sum of all elements
for (\$i = 0; \$i < \$n; ++\$i)
{
\$sum += \$arr[\$i];
}
\$point = array_fill(0, 2, 0);
if (\$sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (\$i = 0; \$i < \$n && \$j < 2; ++\$i)
{
// Add current element into auxiliary variable
\$auxiliary += \$arr[\$i];
if (\$auxiliary == intval(\$sum / 3))
{
\$point[\$j] = \$i + 1;
// Set zero sum
\$auxiliary = 0;
\$j++;
}
}
if (\$j == 2)
{
// When equal three subarray exist
\$j = 0;
// Print the elements of subarray
for (\$i = 0; \$i < \$n; ++\$i)
{
if (\$j < 2 && \$point[\$j] == \$i)
{
echo "\n";
\$j++;
}
echo " ". \$arr[\$i];
}
}
else
{
// When not possible to split array into three equal sum
\$status = false;
}
}
else
{
\$status = false;
}
}
if (\$status != true)
{
echo "\n Three subarray with equal sum are not possible \n";
}
}
}

function main()
{
\$arr = array(5, 2, 7, -5, 7, -1, 3, 4, 5);
// Get the size
\$n = count(\$arr);
}
main();``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````/*
Node Js Program for
Split array in three equal sum subarrays
*/
class Partition
{
// Splitting an array into three sum subarrays
splitEqualSum(arr, n)
{
var status = true;
if (n < 3)
{
status = false;
}
else
{
var sum = 0;
var auxiliary = 0;
// Loop controlling variables
var i = 0;
var j = 0;
// Calculate sum of all elements
for (i = 0; i < n; ++i)
{
sum += arr[i];
}
var point = Array(2).fill(0);
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
for (i = 0; i < n && j < 2; ++i)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == parseInt(sum / 3))
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j++;
}
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
for (i = 0; i < n; ++i)
{
if (j < 2 && point[j] == i)
{
process.stdout.write("\n");
j++;
}
process.stdout.write(" " + arr[i]);
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
process.stdout.write("\n Three subarray with equal sum are not possible \n");
}
}
}

function main()
{
var arr = [5, 2, 7, -5, 7, -1, 3, 4, 5];
// Get the size
var n = arr.length;
}
main();``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````#  Python 3 Program for
#  Split array in three equal sum subarrays

class Partition :
#  Splitting an array into three sum subarrays
def splitEqualSum(self, arr, n) :
status = True
if (n < 3) :
status = False
else :
sum = 0
auxiliary = 0
#  Loop controlling variables
i = 0
j = 0
#  Calculate sum of all elements
while (i < n) :
sum += arr[i]
i += 1

point = [0] * (2)
if (sum % 3 == 0) :
#  Find that three equal subarray exists in given array
i = 0
while (i < n and j < 2) :
#  Add current element into auxiliary variable
auxiliary += arr[i]
if (auxiliary == int(sum / 3)) :
point[j] = i + 1
#  Set zero sum
auxiliary = 0
j += 1

i += 1

if (j == 2) :
#  When equal three subarray exist
j = 0
#  Print the elements of subarray
i = 0
while (i < n) :
if (j < 2 and point[j] == i) :
print(end = "\n")
j += 1

print(" ", arr[i], end = "")
i += 1

else :
#  When not possible to split array into three equal sum
status = False

else :
status = False

if (status != True) :
print("\n Three subarray with equal sum are not possible ")

def main() :
arr = [5, 2, 7, -5, 7, -1, 3, 4, 5]
#  Get the size
n = len(arr)

if __name__ == "__main__": main()``````

#### Output

``````  5  2  7  -5
7  -1  3
4  5``````
``````#  Ruby Program for
#  Split array in three equal sum subarrays

class Partition
#  Splitting an array into three sum subarrays
def splitEqualSum(arr, n)
status = true
if (n < 3)
status = false
else
sum = 0
auxiliary = 0
#  Loop controlling variables
i = 0
j = 0
#  Calculate sum of all elements
while (i < n)
sum += arr[i]
i += 1
end

point = Array.new(2) {0}
if (sum % 3 == 0)
#  Find that three equal subarray exists in given array
i = 0
while (i < n && j < 2)
#  Add current element into auxiliary variable
auxiliary += arr[i]
if (auxiliary == sum / 3)
point[j] = i + 1
#  Set zero sum
auxiliary = 0
j += 1
end

i += 1
end

if (j == 2)
#  When equal three subarray exist
j = 0
#  Print the elements of subarray
i = 0
while (i < n)
if (j < 2 && point[j] == i)
print("\n")
j += 1
end

print(" ", arr[i])
i += 1
end

else
#  When not possible to split array into three equal sum
status = false
end

else
status = false
end

end

if (status != true)
print("\n Three subarray with equal sum are not possible \n")
end

end

end

def main()
arr = [5, 2, 7, -5, 7, -1, 3, 4, 5]
#  Get the size
n = arr.length
end

main()``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````/*
Scala Program for
Split array in three equal sum subarrays
*/
class Partition
{
// Splitting an array into three sum subarrays
def splitEqualSum(arr: Array[Int], n: Int): Unit = {
var status: Boolean = true;
if (n < 3)
{
status = false;
}
else
{
var sum: Int = 0;
var auxiliary: Int = 0;
// Loop controlling variables
var i: Int = 0;
var j: Int = 0;
// Calculate sum of all elements
while (i < n)
{
sum += arr(i);
i += 1;
}
var point: Array[Int] = Array.fill[Int](2)(0);
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
i = 0;
while (i < n && j < 2)
{
// Add current element into auxiliary variable
auxiliary += arr(i);
if (auxiliary == (sum / 3).toInt)
{
point(j) = i + 1;
// Set zero sum
auxiliary = 0;
j += 1;
}
i += 1;
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
i = 0;
while (i < n)
{
if (j < 2 && point(j) == i)
{
print("\n");
j += 1;
}
print(" " + arr(i));
i += 1;
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
print("\n Three subarray with equal sum are not possible \n");
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Partition = new Partition();
var arr: Array[Int] = Array(5, 2, 7, -5, 7, -1, 3, 4, 5);
// Get the size
var n: Int = arr.length;
}
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````
``````/*
Swift 4 Program for
Split array in three equal sum subarrays
*/
class Partition
{
// Splitting an array into three sum subarrays
func splitEqualSum(_ arr: [Int], _ n: Int)
{
var status: Bool = true;
if (n < 3)
{
status = false;
}
else
{
var sum: Int = 0;
var auxiliary: Int = 0;
// Loop controlling variables
var i: Int = 0;
var j: Int = 0;
// Calculate sum of all elements
while (i < n)
{
sum += arr[i];
i += 1;
}
var point: [Int] = Array(repeating: 0, count: 2);
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
i = 0;
while (i < n && j < 2)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j += 1;
}
i += 1;
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
i = 0;
while (i < n)
{
if (j < 2 && point[j] == i)
{
print(terminator: "\n");
j += 1;
}
print(" ", arr[i], terminator: "");
i += 1;
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status  != true)
{
print("\n Three subarray with equal sum are not possible ");
}
}
}
func main()
{
let arr: [Int] = [5, 2, 7, -5, 7, -1, 3, 4, 5];
// Get the size
let n: Int = arr.count;
}
main();``````

#### Output

``````  5  2  7  -5
7  -1  3
4  5``````
``````/*
Kotlin Program for
Split array in three equal sum subarrays
*/
class Partition
{
// Splitting an array into three sum subarrays
fun splitEqualSum(arr: Array < Int > , n: Int): Unit
{
var status: Boolean = true;
if (n < 3)
{
status = false;
}
else
{
var sum: Int = 0;
var auxiliary: Int = 0;
// Loop controlling variables
var i: Int = 0;
var j: Int = 0;
// Calculate sum of all elements
while (i < n)
{
sum += arr[i];
i += 1;
}
var point: Array < Int > = Array(2)
{
0
};
if (sum % 3 == 0)
{
// Find that three equal subarray exists in given array
i = 0;
while (i < n && j < 2)
{
// Add current element into auxiliary variable
auxiliary += arr[i];
if (auxiliary == sum / 3)
{
point[j] = i + 1;
// Set zero sum
auxiliary = 0;
j += 1;
}
i += 1;
}
if (j == 2)
{
// When equal three subarray exist
j = 0;
// Print the elements of subarray
i = 0;
while (i < n)
{
if (j < 2 && point[j] == i)
{
print("\n");
j += 1;
}
print(" " + arr[i]);
i += 1;
}
}
else
{
// When not possible to split array into three equal sum
status = false;
}
}
else
{
status = false;
}
}
if (status != true)
{
print("\n Three subarray with equal sum are not possible \n");
}
}
}
fun main(args: Array < String > ): Unit
{
var arr: Array < Int > = arrayOf(5, 2, 7, -5, 7, -1, 3, 4, 5);
// Get the size
var n: Int = arr.count();
}``````

#### Output

`````` 5 2 7 -5
7 -1 3
4 5``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.