import java.util.*;
class FindFirstOne {
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
// Input size of the array
System.
out.
print("Enter the size of the array: "); int n = sc.nextInt();
// Input elements of the array
int[] arr = new int[n];
System.
out.
println("Enter the elements (0s and 1s only): "); for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int firstOccurrence = findFirstOne(arr, n);
if (firstOccurrence != -1) {
System.
out.
println("First occurrence of 1 is at index: " + firstOccurrence
); } else {
System.
out.
println("1 is not present in the array."); }
}
public static int findFirstOne(int[] arr, int n) {
int start = 0;
int end = n - 1;
int maybeFirst1 = -1;
while (start <= end) {
int mid = start + (end - start) / 2; // Correctly calculate mid
if (arr[mid] == 0) {
start = mid + 1; // Move right if 0 is found
} else {
maybeFirst1 = mid; // Found a 1, keep track
end = mid - 1; // Move left to find the first occurrence
}
}
return maybeFirst1; // Return the index of the first occurrence of 1
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgRmluZEZpcnN0T25lIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICAKICAgICAgICAvLyBJbnB1dCBzaXplIG9mIHRoZSBhcnJheQogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkVudGVyIHRoZSBzaXplIG9mIHRoZSBhcnJheTogIik7CiAgICAgICAgaW50IG4gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgCiAgICAgICAgLy8gSW5wdXQgZWxlbWVudHMgb2YgdGhlIGFycmF5CiAgICAgICAgaW50W10gYXJyID0gbmV3IGludFtuXTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIHRoZSBlbGVtZW50cyAoMHMgYW5kIDFzIG9ubHkpOiAiKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBhcnJbaV0gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGludCBmaXJzdE9jY3VycmVuY2UgPSBmaW5kRmlyc3RPbmUoYXJyLCBuKTsKICAgICAgICAKICAgICAgICBpZiAoZmlyc3RPY2N1cnJlbmNlICE9IC0xKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRmlyc3Qgb2NjdXJyZW5jZSBvZiAxIGlzIGF0IGluZGV4OiAiICsgZmlyc3RPY2N1cnJlbmNlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjEgaXMgbm90IHByZXNlbnQgaW4gdGhlIGFycmF5LiIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBmaW5kRmlyc3RPbmUoaW50W10gYXJyLCBpbnQgbikgewogICAgICAgIGludCBzdGFydCA9IDA7CiAgICAgICAgaW50IGVuZCA9IG4gLSAxOwogICAgICAgIGludCBtYXliZUZpcnN0MSA9IC0xOwoKICAgICAgICB3aGlsZSAoc3RhcnQgPD0gZW5kKSB7CiAgICAgICAgICAgIGludCBtaWQgPSBzdGFydCArIChlbmQgLSBzdGFydCkgLyAyOyAvLyBDb3JyZWN0bHkgY2FsY3VsYXRlIG1pZAoKICAgICAgICAgICAgaWYgKGFyclttaWRdID09IDApIHsKICAgICAgICAgICAgICAgIHN0YXJ0ID0gbWlkICsgMTsgLy8gTW92ZSByaWdodCBpZiAwIGlzIGZvdW5kCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtYXliZUZpcnN0MSA9IG1pZDsgLy8gRm91bmQgYSAxLCBrZWVwIHRyYWNrCiAgICAgICAgICAgICAgICBlbmQgPSBtaWQgLSAxOyAvLyBNb3ZlIGxlZnQgdG8gZmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBtYXliZUZpcnN0MTsgLy8gUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAxCiAgICB9Cn0K