Advertisement
Farjana_akter

Untitled

Feb 19th, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. ll n,m,coin[300],fre[300];
  5. vector<ll>pre,cur;
  6. int dp[2000006];
  7.  
  8.  
  9. void build()
  10. {
  11. for(ll i=0; i<=m; i++)
  12. {
  13. if(dp[i]==1)
  14. pre.push_back(i);
  15. }
  16. }
  17.  
  18. int main()
  19. {
  20. ll i,j,k,t,cas,cnt=0;
  21. cin>>t;
  22. for(cas=1; cas<=t; cas++)
  23. {
  24. cin>>n>>m;
  25. cnt=0;
  26. pre.clear();
  27. cur.clear();
  28. memset(dp,0,sizeof(dp));
  29. for(i=1; i<=n; i++)
  30. {
  31. cin>>coin[i];
  32. }
  33. for(i=1; i<=n; i++)
  34. {
  35. cin>>fre[i];
  36. }
  37. dp[0]=1;
  38. pre.push_back(0);
  39. for(i=n; i>=1; i--)
  40. {
  41. build();
  42. for(j=1; j<=fre[i]; j++)
  43. {
  44. cur.clear();
  45. for(k=0; k<pre.size(); k++)
  46. {
  47. ll banabo=pre[k]+coin[i];
  48. if(banabo<=m && dp[banabo]==0)
  49. {
  50. cnt++;
  51. cur.push_back(banabo);
  52. dp[banabo]=1;
  53. }
  54. }
  55. pre=cur;
  56. }
  57. }
  58. cout<<"Case "<<cas<<": "<<cnt<<endl;
  59. }
  60. return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement