ZOJ Problem Set - 4067 Books
阿新 • • 發佈:2018-11-08
#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; }