public class Main {
public static void main
(String[] args
) { int[] arr = {4,5,7,7,10,10,20,25,25,30,30,40,50};
int k = 30;
int ans[] = new int[2];
ans[0] = firstIndex(arr,k);
System.
out.
println("----------------------------------------------------------------------"); ans[1] = lastIndex(arr,k);
System.
out.
println(ans
[0] +" "+ ans
[1]); }
public static int firstIndex(int[] arr, int k ){
int f =0; int b = arr.length-1;
int ans = -1;
while(f <= b){
int mid = f+(b-f)/2;
if(arr[mid] == k){
ans = mid;
b = mid-1;
}
else if(k >arr[mid]){
f = mid+1;
}
else{
b = mid-1;
}
}
return ans;
}
public static int lastIndex(int arr[], int k ){
int f =0; int b = arr.length -1;
int ans = -1;
while(f <= b){
int mid = f+(b-f)/2;
if(arr[mid] == k){
ans = mid;
f= mid+1;
}
else if(k >arr[mid]){
f = mid+1;
}
else{
b = mid-1;
}
}
return ans;
}
}
cHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgaW50W10gYXJyID0gezQsNSw3LDcsMTAsMTAsMjAsMjUsMjUsMzAsMzAsNDAsNTB9OwogICAgaW50IGsgPSAzMDsKICAgIGludCBhbnNbXSA9IG5ldyBpbnRbMl07CiAgICBhbnNbMF0gPSBmaXJzdEluZGV4KGFycixrKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKICAgIGFuc1sxXSA9IGxhc3RJbmRleChhcnIsayk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYW5zWzBdICsiICAgICAgICAgIisgYW5zWzFdKTsKICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgaW50IGZpcnN0SW5kZXgoaW50W10gYXJyLCBpbnQgayApewogICAgICAgIGludCBmID0wOyBpbnQgYiA9IGFyci5sZW5ndGgtMTsKICAgICAgICBpbnQgYW5zID0gLTE7CiAgICAgICAgd2hpbGUoZiA8PSBiKXsKICAgICAgICAgICAgaW50IG1pZCA9IGYrKGItZikvMjsKICAgICAgICAgICAgaWYoYXJyW21pZF0gPT0gayl7CiAgICAgICAgICAgICAgICBhbnMgPSBtaWQ7CiAgICAgICAgICAgICAgICBiID0gbWlkLTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihrID5hcnJbbWlkXSl7CiAgICAgICAgICAgICAgICBmID0gbWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGIgPSBtaWQtMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBsYXN0SW5kZXgoaW50IGFycltdLCBpbnQgayApewogICAgICAgIGludCBmID0wOyBpbnQgYiA9IGFyci5sZW5ndGggLTE7CiAgICAgICAgaW50IGFucyA9IC0xOwogICAgICAgIHdoaWxlKGYgPD0gYil7CiAgICAgICAgICAgIGludCBtaWQgPSBmKyhiLWYpLzI7CiAgICAgICAgICAgIGlmKGFyclttaWRdID09IGspewogICAgICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgICAgICAgICAgZj0gbWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihrID5hcnJbbWlkXSl7CiAgICAgICAgICAgICAgICBmID0gbWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGIgPSBtaWQtMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQoKfQo=