Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. /*
  2. * 17 A 1
  3. * T(n) = O(n), M(n) = O(1)
  4. */
  5.  
  6. /* Znajduje indeks szczytu w tablicy bitonicznej */
  7. int Szczyt(int *A, int n)
  8. {
  9. int s, l = 0, p = n-1;
  10.  
  11. while(l < p) {
  12. s = (l + p) / 2;
  13. if (A[s] < A[s+1]) {
  14. l = s + 1;
  15. } else {
  16. p = s;
  17. }
  18. }
  19.  
  20. return l;
  21. }
  22.  
  23. int IleGorek(int *A, int n)
  24. {
  25. int l, p, wyn = 0;
  26. l = p = Szczyt(A, n);
  27. wyn = l * (n - p - 1);
  28. l--, p++;
  29.  
  30. while (0 <= l && p < n) {
  31. if (A[l] > A[p]) {
  32. wyn += l * (n - p);
  33. l--;
  34. } else if (A[l] < A[p]) {
  35. wyn += (l + 1) * (n - p - 1);
  36. p++;
  37. } else {
  38. wyn += 2 * l * (n - p - 1);
  39. l--, p++;
  40. }
  41. }
  42.  
  43. return wyn;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement