In this HackerEarth Special Array Operation problem solution, You are given an array A of size N. You can perform an operation in which you will remove the largest and the smallest element from the array and add their difference back into the array. So, the size of the array will decrease by 1 after each operation. You are given Q tasks and in each task, you are given an integer K. For each task, you have to tell the sum of all the elements in the array after K operations.


HackerEarth Special Array Operation problem solution


HackerEarth Special Array Operation problem solution.

#include <bits/stdc++.h>

using namespace std;
typedef long long int LL;


int main()
{

    int n,q,k;
    cin>>n>>q;
    multiset<LL> s;
    multiset<LL> ::iterator it;
    LL x,y,z;
    LL sum=0;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        sum+=x;
        s.insert(x);
    }
    LL ans[n+1];
    ans[0]=sum;
    for(int i=1;i<n;i++)
    {
        it=s.begin();
        x=*it;
        s.erase(it);
        it=s.end();
        it--;
        y=*it;
        s.erase(it);
        z=abs(x-y);
        sum-=(x+y);
        sum+=z;
        s.insert(z);
        ans[i]=sum;

    }
    while(q--)
    {
        cin>>k;
        cout<<ans[k]<<"\n";
    }
    return 0;
}