ZOJ Problem Set - 4067 Books

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/leekerian/article/details/83826290