/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
int[] arr={1,2,2,5,5,6,7,8,8,8,8,9,10};
int target=8;
int fo=firstOccurence(arr,target);
int lo=lastOccurence(arr,target);
System.
out.
println("First occurence of " +target
+" is on index :"+ fo
+ "and last occurence of "+target
+" is on index : "+lo
); }
private static int firstOccurence(int [] nums,int target){
int fo=-1;
int start=0;
int end = nums.length-1;
while(start<=end){
int mid=start+(end-start)/2;
if(nums[mid]<target){
start=mid+1;
}
else if(nums[mid]>target){
end=mid-1;
}else{
fo=mid;
end=mid-1;
}
}
return fo;
}
private static int lastOccurence(int [] nums,int target){
int lo=-1;
int start=0;
int end = nums.length-1;
while(start<=end){
int mid=start+(end-start)/2;
if(nums[mid]<target){
start=mid+1;
}
else if(nums[mid]>target){
end=mid-1;
}else{
lo=mid;
start=mid+1;
}
}
return lo;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQkKCQlpbnRbXSBhcnI9ezEsMiwyLDUsNSw2LDcsOCw4LDgsOCw5LDEwfTsKCQlpbnQgdGFyZ2V0PTg7CgkJaW50IGZvPWZpcnN0T2NjdXJlbmNlKGFycix0YXJnZXQpOwogICAgICAgIGludCBsbz1sYXN0T2NjdXJlbmNlKGFycix0YXJnZXQpOwogICAgICAgIAoJCVN5c3RlbS5vdXQucHJpbnRsbigiRmlyc3Qgb2NjdXJlbmNlIG9mICIgK3RhcmdldCsiIGlzIG9uIGluZGV4IDoiKyBmbysgImFuZCBsYXN0IG9jY3VyZW5jZSBvZiAiK3RhcmdldCsiIGlzIG9uIGluZGV4IDogIitsbyk7Cgl9CgogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGZpcnN0T2NjdXJlbmNlKGludCBbXSBudW1zLGludCB0YXJnZXQpewogICAgICAgIGludCBmbz0tMTsKICAgICAgICAKICAgICAgICBpbnQgc3RhcnQ9MDsKICAgICAgICBpbnQgZW5kID0gbnVtcy5sZW5ndGgtMTsKCiAgICAgICAgd2hpbGUoc3RhcnQ8PWVuZCl7CiAgICAgICAgICAgIGludCBtaWQ9c3RhcnQrKGVuZC1zdGFydCkvMjsKICAgICAgICAgICAgaWYobnVtc1ttaWRdPHRhcmdldCl7CiAgICAgICAgICAgICAgICBzdGFydD1taWQrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKG51bXNbbWlkXT50YXJnZXQpewogICAgICAgICAgICAgICAgZW5kPW1pZC0xOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGZvPW1pZDsKICAgICAgICAgICAgICAgIGVuZD1taWQtMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZm87CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGxhc3RPY2N1cmVuY2UoaW50IFtdIG51bXMsaW50IHRhcmdldCl7CiAgICAgICAgaW50IGxvPS0xOwogICAgICAgIAogICAgICAgIGludCBzdGFydD0wOwogICAgICAgIGludCBlbmQgPSBudW1zLmxlbmd0aC0xOwoKICAgICAgICB3aGlsZShzdGFydDw9ZW5kKXsKICAgICAgICAgICAgaW50IG1pZD1zdGFydCsoZW5kLXN0YXJ0KS8yOwogICAgICAgICAgICBpZihudW1zW21pZF08dGFyZ2V0KXsKICAgICAgICAgICAgICAgIHN0YXJ0PW1pZCsxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYobnVtc1ttaWRdPnRhcmdldCl7CiAgICAgICAgICAgICAgICBlbmQ9bWlkLTE7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgbG89bWlkOwogICAgICAgICAgICAgICAgc3RhcnQ9bWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxvOwogICAgfQp9