Advertisement
a53

NrSubCresc

a53
Nov 17th, 2019
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. /// Solutie - Moca Andrei - 100p
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. const int mod = 666013;
  5. int aib[111][111111], x, n, K, res, cnt, s;
  6.  
  7. inline void Update(int k, int poz, int val)
  8. {
  9. for (int i = poz; i <= n; i += i & -i)
  10. {
  11. aib[k][i] += val;
  12. if (aib[k][i] > mod)
  13. aib[k][i] -= mod;
  14. }
  15. }
  16.  
  17. inline int Query(int k, int poz)
  18. {
  19. s = 0;
  20. for (int i = poz; i > 0; i -= i & -i)
  21. {
  22. s += aib[k][i];
  23. if (s > mod)
  24. s -= mod;
  25. }
  26. return s;
  27. }
  28.  
  29. int main()
  30. {
  31. ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  32. cin >> n >> K;
  33. vector<int> v(n + 1), vs(n + 1);
  34. for (int i = 1; i <= n; ++i)
  35. cin >> v[i], vs[i] = v[i];
  36. sort(vs.begin(), vs.end());
  37. for (int i = 1; i <= n; ++i)
  38. v[i] = lower_bound(vs.begin(), vs.end(), v[i]) - vs.begin();
  39. for (int i = 1; i <= n; ++i)
  40. {
  41. Update(1, v[i], 1);
  42. for (int k = 2; k <= K; ++k)
  43. Update(k, v[i], Query(k - 1, v[i] - 1));
  44. }
  45. cout << Query(K, n);
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement