/* 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
}
public int search(int[] nums, int target) {
int low = 0, high = nums.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (nums[mid] == target) return mid;
// Left half is sorted
if (nums[low] <= nums[mid]) {
if ( target >= nums[low] && target < nums[mid]) {
high = mid - 1; // target is in left half
} else {
low = mid + 1; // target is in right half
}
}
// Right half is sorted
else {
if (target > nums[mid] && target <= nums[high]) {
low = mid + 1; // target is in right half
} else {
high = mid - 1; // target is in left half
}
}
}
return -1;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KCQoJIHB1YmxpYyBpbnQgc2VhcmNoKGludFtdIG51bXMsIGludCB0YXJnZXQpIHsKICAgICAgICBpbnQgbG93ID0gMCwgaGlnaCA9IG51bXMubGVuZ3RoIC0gMTsKCiAgICAgICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7CiAgICAgICAgICAgIGludCBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwoKICAgICAgICAgICAgaWYgKG51bXNbbWlkXSA9PSB0YXJnZXQpIHJldHVybiBtaWQ7CgogICAgICAgICAgICAvLyBMZWZ0IGhhbGYgaXMgc29ydGVkCiAgICAgICAgICAgIGlmIChudW1zW2xvd10gPD0gbnVtc1ttaWRdKSB7CiAgICAgICAgICAgICAgICBpZiAoIHRhcmdldCA+PSBudW1zW2xvd10gICAmJiB0YXJnZXQgPCBudW1zW21pZF0pIHsKICAgICAgICAgICAgICAgICAgICBoaWdoID0gbWlkIC0gMTsgIC8vIHRhcmdldCBpcyBpbiBsZWZ0IGhhbGYKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTsgICAvLyB0YXJnZXQgaXMgaW4gcmlnaHQgaGFsZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFJpZ2h0IGhhbGYgaXMgc29ydGVkCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHRhcmdldCA+IG51bXNbbWlkXSAgJiYgdGFyZ2V0IDw9IG51bXNbaGlnaF0pIHsKICAgICAgICAgICAgICAgICAgICBsb3cgPSBtaWQgKyAxOyAgIC8vIHRhcmdldCBpcyBpbiByaWdodCBoYWxmCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOyAgLy8gdGFyZ2V0IGlzIGluIGxlZnQgaGFsZgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTE7CiAgICB9Cn0=