given an array of stock prices, find the month at which the net price change is minimum. if there are several such months, return the earliest month.

int solve(vector<int>&v){

    int n = v.size();
    long  ans = n;
    long mx = INT_MAX;
    long rsum = 0;
    for (auto val : v)
        rsum += val;
    long lsum = 0;
    for (int i = 0; i < n - 1; i++)
    {
        lsum += v[i];
        rsum -= v[i];
        long ravg = (rsum) / (n - i -1);
        long lavg = (lsum) / (i + 1);
        if ((abs(lavg - ravg)) < mx)
        {
            mx = abs(lavg - ravg);
            ans = i + 1;
        }
    }
  return ans;

}
Comments (4)