题解:根据题意写就行,没什么难度....
代码:
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <algorithm> 5 #include <iostream> 6 #include <ctype.h> 7 #include <iomanip> 8 #include <queue> 9 #include <stdlib.h> 10 using namespace std; 11 12 int dp[100010],a[100010]; 13 14 long long t,n,m,k,b,i,j; 15 int main() 16 { 17 scanf("%lld",&t); 18 while(t--){ 19 memset(a,0,sizeof(a)); 20 scanf("%lld%lld%lld",&n,&m,&k); 21 for(i=1;i<=n;i++){ 22 scanf("%d",&a[i]); 23 } 24 for(i=1;i<=m;i++){ 25 scanf("%lld",&b); 26 k-=a[b]; 27 a[b]=0; 28 } 29 if(k < 0){ 30 cout<<-1<<endl; 31 continue; 32 } 33 int sum=m; 34 sort(a,a+n+1); 35 for(i=1;i<=n;i++){ 36 if(a[i]==0) 37 continue; 38 else{ 39 k-=a[i]; 40 if(k >= 0) 41 sum++; 42 else 43 break; 44 } 45 } 46 cout<<sum<<endl; 47 } 48 }
原文:http://www.cnblogs.com/wangmengmeng/p/5007693.html