import java.util.*;
public class Main {
static int find(int[] a, int key) {
int left = 0, right = a.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (a[mid] == key) return mid;
if (a[left] <= a[mid]) {
if (key >= a[left] && key < a[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
} else {
if (key > a[mid] && key <= a[right]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
}
return -1;
}
public static void main
(String[] args
) { int[] arr = {11, 13, 18, 2, 3, 5, 7};
int target = 3;
int pos = find(arr, target);
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBpbnQgZmluZChpbnRbXSBhLCBpbnQga2V5KSB7CiAgICAgICAgaW50IGxlZnQgPSAwLCByaWdodCA9IGEubGVuZ3RoIC0gMTsKCiAgICAgICAgd2hpbGUgKGxlZnQgPD0gcmlnaHQpIHsKICAgICAgICAgICAgaW50IG1pZCA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKCiAgICAgICAgICAgIGlmIChhW21pZF0gPT0ga2V5KSByZXR1cm4gbWlkOwoKICAgICAgICAgICAgaWYgKGFbbGVmdF0gPD0gYVttaWRdKSB7CiAgICAgICAgICAgICAgICBpZiAoa2V5ID49IGFbbGVmdF0gJiYga2V5IDwgYVttaWRdKSB7CiAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBtaWQgLSAxOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbWlkICsgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChrZXkgPiBhW21pZF0gJiYga2V5IDw9IGFbcmlnaHRdKSB7CiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWlkIC0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnRbXSBhcnIgPSB7MTEsIDEzLCAxOCwgMiwgMywgNSwgN307CiAgICAgICAgaW50IHRhcmdldCA9IDM7CgogICAgICAgIGludCBwb3MgPSBmaW5kKGFyciwgdGFyZ2V0KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocG9zKTsKICAgIH0KfQo=