В данной задаче ниже мой код показывает пустой стек Исключение .
Вам дан стек из N целых чисел, так что первыйЭлемент представляет вершину стека, а последний элемент представляет дно стека.
Вам необходимо извлечь хотя бы один элемент из стека.
В любой момент вы можете преобразовать стек в очередь. Нижняя часть стека представляет начало очереди. Вы не можете преобразовать очередь обратно в стек.
Ваша задача состоит в том, чтобы удалить ровно K элементов так, чтобы сумма K удаленных элементов была максимизирована.
Формат ввода:
Первая строка состоит из двух разделенных пробелом целых чисел N и K.
Вторая строка состоит из N разделенных пробелом целых чисел, обозначающих элементы стека.
Выходной формат:
Вывести максимально возможную сумму из K удаленных элементов
import java.util.*;
class Main {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
Stack<Integer> stack=new Stack<Integer>();
Stack<Integer> stack2=new Stack<Integer>();
int sum=0,num;
while(n-->0){
num=sc.nextInt();
stack.push(num);
}
while(k-->0){
if(stack.peek()>stack.lastElement()){
sum+=stack.peek();
stack.pop();
}
else if(stack.peek()<stack.lastElement()){
while (!stack.isEmpty()){
stack2.push(stack.peek());
stack.pop();
}
sum+=stack2.peek();
stack2.pop();
}
else if(stack2.peek()<stack2.lastElement()){
while (!stack2.isEmpty()){
stack.push(stack2.peek());
stack2.pop();
}
sum+=stack.peek();
stack.pop();
}
}
System.out.println(sum);
}
}