fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,k;
  4. long long a[5510];
  5. map<int,int>ma;
  6. long long f[501];
  7. long long h[101];
  8. vector<int>v;
  9. map<int,int>freq;
  10. long long solve(int idx,map<int,int>m)
  11. {
  12. // cout<<m[f[idx]]<<endl;
  13. if(idx>n)
  14. {
  15. return 0;
  16. }
  17.  
  18. int i;
  19. long long ans=0;
  20. if(m[f[idx]]==0)
  21. {
  22. return solve(idx+1,m);
  23. }
  24. long long int g=m[f[idx]];
  25. for(i=1;i<=min(g,(long long)k);i++)
  26. {
  27. m[f[idx]]--;
  28. long long ans1=h[i]+solve(idx+1,m);
  29. if(ans1>ans)
  30. {
  31. ans=ans1;
  32. }
  33. }
  34. return ans;
  35. }
  36. int main()
  37. {
  38. cin>>n>>k;
  39. int i;
  40. for(i=1;i<=n*k;i++)
  41. {
  42. cin>>a[i];
  43. freq[a[i]]++;
  44. }
  45. for(i=1;i<=n;i++)
  46. {
  47. cin>>f[i];
  48. }
  49.  
  50. for(i=1;i<=k;i++)
  51. {
  52. cin>>h[i];
  53. }
  54. cout<<solve(1,freq)<<endl;
  55. }
  56.  
Success #stdin #stdout 0s 4512KB
stdin
4 3
1 3 2 8 5 5 8 2 2 8 5 2
1 2 2 5
2 6 7
stdout
21