/* package whatever; // don't place package name! */
import java.util.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int rightCount(int search, int ... arr) {
int left = 0;
int right = arr.length;
if (right > 0) { // массив не пустой?
if (search < arr[left]) { // проверить значение слева
right = 0;
} else if (search >= arr[right - 1]) { // проверить значение справа
left = arr.length;
}
}
while (left < right) {
int mid = (left + right) / 2;
if (arr[mid] > search) {
right = mid;
} else {
left = mid + 1;
}
}
return arr.length - right;
}
{
int[] arr = {15, 17, 21, 33, 33, 33, 59, 66, 77};
int[] tests = {10, 30, 33, 60, 77, 80};
for (int search : tests) {
System.
out.
printf("search = %d -> %d%n", search, rightCount
(search, arr
)); }
System.
out.
printf("search = %d in empty array %d%n",
100, rightCount
(100)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CgkKcHVibGljIHN0YXRpYyBpbnQgcmlnaHRDb3VudChpbnQgc2VhcmNoLCBpbnQgLi4uIGFycikgewogICAgaW50IGxlZnQgPSAwOwogICAgaW50IHJpZ2h0ID0gYXJyLmxlbmd0aDsKICAgIAogICAgaWYgKHJpZ2h0ID4gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g0LzQsNGB0YHQuNCyINC90LUg0L/Rg9GB0YLQvtC5PwogICAgICAgIGlmIChzZWFyY2ggPCBhcnJbbGVmdF0pIHsgICAgICAgICAgICAgICAgLy8g0L/RgNC+0LLQtdGA0LjRgtGMINC30L3QsNGH0LXQvdC40LUg0YHQu9C10LLQsCAKICAgICAgICAgICAgcmlnaHQgPSAwOwogICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoID49IGFycltyaWdodCAtIDFdKSB7ICAgLy8g0L/RgNC+0LLQtdGA0LjRgtGMINC30L3QsNGH0LXQvdC40LUg0YHQv9GA0LDQstCwCiAgICAgICAgICAgIGxlZnQgPSBhcnIubGVuZ3RoOwogICAgICAgIH0KICAgIH0KICAgIAogICAgd2hpbGUgKGxlZnQgPCByaWdodCkgewogICAgICAgIGludCBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDI7CiAgICAgICAgaWYgKGFyclttaWRdID4gc2VhcmNoKSB7CiAgICAgICAgICAgIHJpZ2h0ID0gbWlkOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhcnIubGVuZ3RoIC0gcmlnaHQ7Cn0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlpbnRbXSBhcnIgPSB7MTUsIDE3LCAyMSwgMzMsIDMzLCAzMywgNTksIDY2LCA3N307CgkJCgkJaW50W10gdGVzdHMgPSB7MTAsIDMwLCAzMywgNjAsIDc3LCA4MH07CgkJCgkJZm9yIChpbnQgc2VhcmNoIDogdGVzdHMpIHsKCQkJU3lzdGVtLm91dC5wcmludGYoInNlYXJjaCA9ICVkIC0+ICVkJW4iLCBzZWFyY2gsIHJpZ2h0Q291bnQoc2VhcmNoLCBhcnIpKTsKCQl9CgkJU3lzdGVtLm91dC5wcmludGYoInNlYXJjaCA9ICVkIGluIGVtcHR5IGFycmF5ICVkJW4iLCAxMDAsIHJpZ2h0Q291bnQoMTAwKSk7Cgl9Cn0=