-
Notifications
You must be signed in to change notification settings - Fork 1
/
helper.c
34 lines (31 loc) · 800 Bytes
/
helper.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
#include<stdlib.h>
#define ll long long int
ll upperBound(ll *A,ll low, ll high,ll K){
ll mid = ( low + high ) / 2;
while(low <= high){
mid = ( low + high ) / 2 ;
if(A[mid] > K && ( mid == 0 || A[mid-1] <= K ))
return mid ;
else if(A[mid] > K)
high = mid - 1 ;
else
low = mid + 1 ;
}
if(A[mid] <= K) mid++;
return mid ;
}
ll lowerBound(ll *A,ll low, ll high,ll K){
ll mid = ( low + high ) / 2;
while(low <= high){
mid = ( low + high ) / 2 ;
if(A[mid] >= K && ( mid == 0 || A[mid-1] < K ))
return mid ;
else if(A[mid] >= K)
high = mid - 1 ;
else
low = mid + 1 ;
}
if(A[mid] < K) mid++;
return mid ;
}