2018青島區域賽J(BOOK)
阿新 • • 發佈:2018-11-07
#include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; long long sum; int n,m; int num[100009]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); int f=0; for(int i=1; i<=n; i++) { scanf("%d",&num[i]); if(num[i]==0)++f;//統計0的個數; } if(m==n) { printf("Richman\n"); continue;//一定可以滿足的情況; } if(f>m) { printf("Impossible\n"); continue;//如果0的個數多餘m個,不可能情況; }//其他情況就是輸出數值的情況; m-=f;//m先減去0的個數,再買非0值 long long sum=0; int ll=0; int i; for(i=1; i<=n; i++) { //0買完後再買非0 if(ll==m)break; if(num[i]!=0) { ++ll; sum+=num[i];//買非0 } } int mins1=inf;//從第i個元素開始找出非0最小值; for(int j=i; j<=n; j++) { if(num[j]!=0) mins1=min(mins1,num[j]); } printf("%lld\n",sum+mins1-1);//加上輸出即可,注意要用scanf、printf進行,否則超時 } }