Given an Array, To find if there exists a index whose sum of elements in left equals the sum of elements at right

Write a function to find if there exists at least one point / index , whose left side sum of elements equals right side sum of elements.

For example:
If the given array is 12346, position '4'(1-based indexing) satisfies the condition. i.e.,1+2+3 = 6
If the given array is 5237, position '3' satisfies the condition. 5+2 = 7


C Implementation:

#include <stdio.h>

/* Size of the array */
#define MAX 1000000

int main(void)
{
 int T,A[MAX],i,sum,left,flag,N;
    
    /* Get the number of test cases */
    scanf("%d",&T);
    
    while(T--)
    {
     sum=0;
      left=0;
      flag=0;
     
      /* Get the number of elements of the array */
      scanf("%d",&N);
     
      for(i=0;i<N;i++)
      {
       
       /* Get the elements of the array */
        scanf("%d",&A[i]);
        
        /* Calculate the sum of the elements of the array thereby */
        sum=sum+A[i];
      }
      
      for(i=0;i<N;i++)
      {
       
       /* If ith element is subtracted from the sum, then sum has total sum of the right side */
        sum=sum-A[i];
        
        /* left has the initial value 0 */
        if(left==sum)
        {
          flag=1;
          break;
        }
        
        /* It adds up every element from the start as we move through the entire array */
        left=left+A[i];
      }
      
      /* If such an index exists in the given array */
      if(flag==1)
       printf("YES\n");
      
      /* If such an index doesn't exists in the given array */
      else
       printf("NO\n");
    }
    return 0;
}


C++ Implementation:

#include <iostream>
#define MAX 1000000
using namespace std;
int main()
{
    int T,A[MAX],i,sum,left,flag,N;
    
    /* Get the number of test cases */
    cin>>T;
    
    while(T--)
    {
     sum=0;
      left=0;
      flag=0;
      
      /* Get the number of elements of the array */
      cin>>N;
      
      for(i=0;i<N;i++)
      {
       /* Get the elements of the array */
        cin>>A[i];
        
        /* Calculate the sum of the elements while getting the input */
        sum=sum+A[i];
      }
      
      for(i=0;i<N;i++)
      {
       
       /* Calculate the right sum */
        sum=sum-A[i];
        
        /* Check whether the left sum equals the right sum */
        if(left==sum)
        {
       flag=1;
          break;
        }
        
        /* Keep track of the left sum */
        left=left+A[i];
      }
      
      /* Print YES if such an index exists in the array */
      if(flag==1)
       cout<<"YES\n";
      
      /* Print NO if such an index doesn't exists in the array */
      else
       cout<<"NO\n";
    }
    return 0;
}


Java Implementation:


import java.util.Scanner;
class TestClass {
 public static void main(String args[] ) throws Exception 
 {
  
  /* Create a scanner object to accept input from the user */
    Scanner in=new Scanner(System.in);
    
    /* Get the number of test cases from the user */
    int T=in.nextInt();
    
    while((T--)>0)
    {
     /* Get the number of elements of array from the user */
      int N=in.nextInt();
      
      int sum=0;
      int left=0;
      int flag=0,i;
      int arr[]=new int[N];
      
      for(i=0;i<N;i++)
      {
       
       /* Get the elements of the array */
       arr[i]=in.nextInt();
       
       /* Calculate the sum of the elements of the array */
       sum+=arr[i];
      }
      
      for(i=0;i<N;i++)
      {
       /* Find the right sum */
       sum=sum-arr[i];
       
       /* Compare with left sum */
       if(sum==left)
       {
         flag=1;
         break;
       }
       
       /* Update left sum for every index move */
       left=left+arr[i];
      }
      
      /* If there exists such an index, print YES */
      if(flag==1)
       System.out.println("YES");
       
      /* Else print NO*/
      else
       System.out.println("NO");
    }
    }
}