版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leekerian/article/details/83826290
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
long long num[111111];
int main()
{
int T;
cin>>T;
while(T--)
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>num[i];
if(n==m)
{
printf("Richman\n");
continue;
}
else if(m==0)
{
sort(num,num+n);
if(num[0]==0)
printf("Impossible\n");
else
printf("%lld\n",num[0]-1);
continue;
}
else
{
int num1=0;
for(int i=0;i<n;i++)
{
if(num[i]==0)
num1++;
}
if(num1==m)
{
sort(num,num+n);
for(int i=0;i<n;i++)
{
if(num[i]!=0)
{
printf("%lld\n",num[i]-1);
break;
}
}
continue;
}
else if(num1>m)
{
printf("Impossible\n");
continue;
}
else
{
m=m-num1;
long long ans=0;
int fl=0;
for(int i=0;i<n;i++)
{
if(num[i]!=0)
{
fl++;
if(fl==m+1)
{
long long t3=1e9;
for(int j=i;j<n;j++)
{
if(num[j]<t3&&num[j]!=0)
t3=num[j];
}
ans+=t3-1;
break;
}
else
{
ans+=num[i];
}
}
}
printf("%lld\n",ans);
}
}
}
return 0;
}