Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 17 A 1
- * T(n) = O(n), M(n) = O(1)
- */
- /* Znajduje indeks szczytu w tablicy bitonicznej */
- int Szczyt(int *A, int n)
- {
- int s, l = 0, p = n-1;
- while(l < p) {
- s = (l + p) / 2;
- if (A[s] < A[s+1]) {
- l = s + 1;
- } else {
- p = s;
- }
- }
- return l;
- }
- int IleGorek(int *A, int n)
- {
- int l, p, wyn = 0;
- l = p = Szczyt(A, n);
- wyn = l * (n - p - 1);
- l--, p++;
- while (0 <= l && p < n) {
- if (A[l] > A[p]) {
- wyn += l * (n - p);
- l--;
- } else if (A[l] < A[p]) {
- wyn += (l + 1) * (n - p - 1);
- p++;
- } else {
- wyn += 2 * l * (n - p - 1);
- l--, p++;
- }
- }
- return wyn;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement