Education + Jobs Hiring Website - 2025
0 like 0 dislike
35 views

ago in Online Assessments by Expert (139,590 points) | 35 views

1 Answer

0 like 0 dislike
import java.util.*;
import java.lang.*;
import java.io.*;

class Codechef
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int[] distance = {50, 55, 60};
        int[] targetDistance = {60, 55, 50, 65};  

        int[] result = countMinOperations(distance, targetDistance);

        System.out.println("Result: " + Arrays.toString(result));
    }

    public static int[] countMinOperations(int[] dist, int[] target) {
        int n = dist.length;
        int q = target.length;
        Arrays.sort(dist);
        
        long[] ps = new long[n + 1];
        for(int i = 0; i < n; i++) {
            ps[i + 1] = ps[i] + dist[i];
        }
        
        int[] ans = new int[q];
        for(int i = 0; i < q; i++) {
            long x = target[i];
            int idx = lowerBound(dist, target[i]);
            
            long leftSum = ps[idx];
            long leftCnt = idx;
            long leftTotal = (x * leftCnt) - leftSum;
            
            long rightSum = ps[n] - ps[idx];
            long rightCount = (n - idx);
            long rightTotal = rightSum - (x * rightCount);
            
            ans[i] = (int)(leftTotal + rightTotal);
        }
        
        return ans;
    }

    public static int lowerBound(int[] dist, int target) {
        int low = 0;
        int high = dist.length - 1;
        while(low <= high) {
            int mid = low + (high - low) / 2;
            if(dist[mid] >= target) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
        return low;
    }
}
ago by (140 points)