n, s = str(input()).split()
n = int(n)
s = int(s)
costs = str(input()).split()
costs = list(map(lambda x: int(x), costs))
costs = sorted(costs)
left = 0
right = n – 1
if s >= costs[0]:
while left = costs[median]:
left = median
else:
right = median – 1
print(costs[left])
else:
print(0)
перевести код python на язык программирования Java
java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.next());
int s = Integer.parseInt(scanner.next());
String[] costsString = scanner.nextLine().split(" ");
int[] costs = new int[n];
for (int i = 0; i < n; i++) {
costs[i] = Integer.parseInt(costsString[i]);
}
Arrays.sort(costs);
int left = 0;
int right = n - 1;
if (s >= costs[0]) {
while (left < right) {
int median = (left + right) / 2;
if (s >= costs[median]) {
left = median;
} else {
right = median - 1;
}
}
System.out.println(costs[left]);
} else {
System.out.println(0);
}
}
}
В данном коде мы считываем два числа `n` и `s`. Затем считываем строку с числами стоимостей. Далее преобразуем строку в массив чисел и сортируем его по возрастанию. Затем, если сумма `s` больше или равна первому элементу массива `costs`, мы входим в цикл, который выполняется пока `left` меньше `right`. Внутри цикла вычисляем среднее значение между `left` и `right`, проверяем, больше ли или равно `s` этому значению в массиве. Если да, то присваиваем `left` значение среднего, иначе присваиваем `right` значение среднего минус один. После цикла выводим значение `costs[left]`, если оно существует, иначе выводим `0`.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет