1. Java / Говнокод #19525

    −35

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    import java.util.function.Predicate;
    
    public class BinarySearchSpan {
        // exists i:
        //      (forall j in (0..i) predicate.test(a[i]))
        //      && (forall j in [i, a.length): predicate.test(a[j]))
        public static int iterativeBinarySearch(int[] a, Predicate<Integer> predicate) {
            int l = -1, r = a.length;
    
            // (l == -1 || !predicate.test(a[l])) && (r == a.length || predicate.test(a[r]))
            while (l < r - 1) {
                int mid = l + (r - l) / 2;
                if (predicate.test(a[mid])) {
                    r = mid;
                }
                else {
                    l = mid;
                }
            }
    
            return r;
        }
        // if (exists i: predicate.test(a[i])) then
        //     result = min i: predicate.test(a[i])
        // else
        //     result = a.length
    
    
        public static void main(String[] args) {
            int a[] = new int[args.length - 1];
            for (int i = 1; i < args.length; ++i) {
                a[i - 1] = Integer.parseInt(args[i]);
            }
    
            int x = Integer.parseInt(args[0]);
    
            int i1 = iterativeBinarySearch(a, (a1) -> a1 <= x);
            int length = iterativeBinarySearch(a, (a1) -> a1 < x) - i1;
    
            System.out.println(i1 + " " + length);
        }
    }

    Запостил: artemohanjanyan, 24 Февраля 2016

    Комментарии (0) RSS

    Добавить комментарий

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Где здесь C++, guest?!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код