C Online Compiler
Example: Prefix Sum Equilibrium Index
C
C++
C#
Java
Python
PHP
main.c
STDIN
Run
// Prefix Sum Equilibrium Index #include
int findEquilibriumIndexPrefixSum(int arr[], int n) { if (n == 0) return -1; // Handle empty array long long totalSum = 0; // Step 1: Calculate the total sum of the array for (int i = 0; i < n; i++) { totalSum += arr[i]; } long long leftSum = 0; // Step 2: Iterate through the array to find equilibrium index for (int i = 0; i < n; i++) { // rightSum is totalSum - leftSum - current element long long rightSum = totalSum - leftSum - arr[i]; if (leftSum == rightSum) { return i; // Found an equilibrium index } // Update leftSum for the next iteration leftSum += arr[i]; } return -1; // No equilibrium index found } int main() { // Step 1: Define an array int arr[] = {-7, 1, 5, 2, -4, 3, 0}; int n = sizeof(arr) / sizeof(arr[0]); // Step 2: Find the equilibrium index using prefix sum int equilibriumIndex = findEquilibriumIndexPrefixSum(arr, n); // Step 3: Print the result if (equilibriumIndex != -1) { printf("Equilibrium index found at position: %d\n", equilibriumIndex); } else { printf("No equilibrium index found.\n"); } // Test with another array int arr2[] = {1, 2, 3}; int n2 = sizeof(arr2) / sizeof(arr2[0]); equilibriumIndex = findEquilibriumIndexPrefixSum(arr2, n2); if (equilibriumIndex != -1) { printf("Equilibrium index for {1, 2, 3} found at position: %d\n", equilibriumIndex); } else { printf("No equilibrium index for {1, 2, 3} found.\n"); } // Test with an array where 0 is equilibrium int arr3[] = {0, 0, 0}; int n3 = sizeof(arr3) / sizeof(arr3[0]); equilibriumIndex = findEquilibriumIndexPrefixSum(arr3, n3); if (equilibriumIndex != -1) { printf("Equilibrium index for {0, 0, 0} found at position: %d\n", equilibriumIndex); } else { printf("No equilibrium index for {0, 0, 0} found.\n"); } return 0; }
Output
Clear
ADVERTISEMENTS