namanbansal013

Untitled

Sep 25th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define modulo 1000000007
  5. long long dp[1008][1008];
  6.  
  7. int main() {
  8. ios_base::sync_with_stdio(0);
  9. cin.tie(0);cout.tie(0);
  10. int n, k;
  11. cin >> n >> k;
  12. int x;
  13. map<int, int> m;
  14. for(int i = 0; i < n; i++) {
  15. cin >> x;
  16. m[x]++;
  17. }
  18. vector<long long> v;
  19. for(auto i = m.begin(); i != m.end(); i++) {
  20. v.push_back(i->second);
  21. }
  22. for(int i = 0; i < v.size(); i++) {
  23. for(int j = 1; j <= v.size(); j++) {
  24. dp[i][j] = 0;
  25. }
  26. }
  27. for(int i = 0; i < v.size(); i++) {
  28. dp[i][0] = 1;
  29. }
  30. dp[0][1] = v[0];
  31. for(int i = 1; i < v.size(); i++) {
  32. for(int j = 1; j <= v.size(); j++) {
  33. dp[i][j] += dp[i - 1][j];
  34. dp[i][j] = dp[i][j] % modulo;
  35. dp[i][j] += (dp[i - 1][j - 1]) * v[i];
  36. dp[i][j] = dp[i][j] % modulo;
  37. }
  38. }
  39. long long ans[v.size() + 1];
  40. ans[0] = 1;
  41. for(int i = 1; i <= v.size(); i++) {
  42. ans[i] = ans[i - 1] + dp[v.size() - 1][i];
  43. ans[i] = ans[i] % modulo;
  44. }
  45. /*for(int i = 0; i < v.size(); i++) {
  46. for(int j = 0; j <= v.size(); j++) {
  47. cout << dp[i][j] << " ";
  48. }
  49. cout << "\n";
  50. }
  51. for(int i = 0; i <= v.size(); i++) {
  52. cout << ans[i] << " ";
  53. }
  54. cout << "\n";*/
  55. if(k <= v.size()) {
  56. cout << ans[k];
  57. }
  58. else {
  59. cout << ans[v.size()];
  60. }
  61. return 0;
  62. }
Add Comment
Please, Sign In to add comment