In this HackerEarth Remove the element problem You are given an integer array A of size N. You can perform an operation exactly N number of times. In the operation, you can remove one element from array A and the operation will cost Ai units if ith is removed from the array. The operation will take 1 second.
Elements of array A will keep on increasing every second until it is removed. Let ith element is Ai at jth second. Then the ith element will increase by (j + 1) * Ai and the element will become Ai + (j + 1) * Ai at (j + 1)th second.
Your task is to find the minimum cost to remove all the elements from array A. As the answer can be very large, print the answer module 10^9 + 7.
HackerEarth Remove the element problem solution.
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll, ll> pll;
typedef vector<ll> vll;
typedef vector<int> vi;
#define pb push_back
const ll INF=1e18;
const int mod=1000000007;
ll arr[100005], fact[100005];
int main()
{
ll t,n,m,i,j,k;
fact[0]=1;
for (i=1;i<100005;++i)
fact[i]=(i*fact[i-1])%mod;
scanf ("%lld",&t);
while (t--)
{
scanf ("%lld",&n);
for (i=1;i<=n;++i)
scanf ("%lld",&arr[i]);
sort(arr+1,arr+n+1,[](ll x, ll y)
{
return x>y;
});
ll ans=0;
for (i=1;i<=n;++i)
ans=(ans+fact[i]*arr[i])%mod;
printf ("%lld\n",ans);
}
return 0;
}
0 Comments