• + 2 comments

    My code in java :- public static void main(String[] args) { InputReader in = new InputReader(System.in); int n=in.readInt(), k=in.readInt(), count=k;

        if(2*k>n){ k=n-k; count =k;}
       long ar[] = new long[n];
        for(int i=0; i<n; i++)
            ar[i]=in.readLong();
        Arrays.sort(ar);   //Array sorted
        long[] set1 = new long[k];
        long[] set2 = new long[n-k];
        int ptrl=n/2, ptrr=ptrl, sptr1=0, sptr2=0;
        set1[sptr1++]=ar[ptrl]; count--;
        ptrl-=2; ptrr+=2; 
        while(count>0){
            set2[sptr2++]=ar[ptrl+1];
            set2[sptr2++]=ar[ptrr-1];
            set1[sptr1++]=ar[ptrl];
            count--; ptrl-=2;
            if(count>0){
                set1[sptr1++]=ar[ptrr];
                count--;
            }
        }
        ptrl++;
        while(ptrl>=0){
            set2[sptr2++]=ar[ptrl];
            ptrl--;
        }
        int p=n-1;
        while(sptr2!=(n-k)){
            set2[sptr2++]=ar[p];
            p--;
        }
        //calculate diff
        long ans=0;
        for(int i=0; i<k; i++){
            for(int j=0; j<(n-k); j++){
                ans+=(long)Math.abs(set1[i]-set2[j]);
            }
        }
        System.out.print(ans);
    }