Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.55 KB | None | 0 0
  1. Int32 CentreOfGravity(int[] arr) {
  2.    
  3.     // get "total mass" of input:
  4.     Int32 total = 0;
  5.     for(int i = 0; i < arr.Length; i++ ) total += arr[i]; // or just arr.Sum( e => e ); if using Linq
  6.    
  7.     // Work from left-to-right such that Min( Mass(left) - Mass(right) ) is found:
  8.     Int32 left = 0;
  9.     Int32 minDelta = Int32.MaxValue;
  10.     Int32 minDeltaIdx = -1;
  11.     for(int i = 0; i < arr.Length; i++ ) {
  12.        
  13.         left += arr[i];
  14.        
  15.         Int32 delta = left - (total - left);
  16.         if( delta < minDelta ) {
  17.             minDelta = delta;
  18.             minDeltaIdx = i;
  19.         }
  20.     }
  21.    
  22.     return minDeltaIdx;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement