Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <stdio.h>
- int ile(int a[], int n, int x)
- {
- int licznik = 0;
- for (int r = 0; r < 2; r++) {
- int k = (n - r + 1) / 2; // długość tablicy a[r], a[r+2], ...
- int beg = 0, end = k - 1;
- while (beg < end) { // znajduje pierwsze wystąpienie x w tablicy a[r], a[r+2], ... (jeśli istnieje)
- int mid = (beg + end) / 2;
- if (a[r + 2*mid] < x) // a[r + 2*mid] - element tablicy a[r], a[r+2], ... o numerze mid
- beg = mid + 1;
- else
- end = mid;
- }
- int pos1 = r + 2*beg;
- beg = 0, end = k - 1;
- while (beg < end) { // znajduje ostatnie wystąpienie x w tablicy a[r], a[r+2], ... (jeśli istnieje)
- int mid = (beg + end + 1) / 2;
- if (a[r + 2*mid] > x)
- end = mid - 1;
- else
- beg = mid;
- }
- int pos2 = r + 2*beg;
- if (a[pos1] == x)
- licznik += (pos2 - pos1) / 2 + 1;
- }
- return licznik;
- }
- int main()
- {
- int n, x;
- scanf("%d%d", &n, &x);
- int A[n];
- for (int i = 0; i < n; i++)
- scanf("%d", &A[i]);
- printf("%d\n", ile(A, n, x));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement