Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с Заданием( java)

Игорь Шупилкин Ученик (106), на голосовании 1 год назад
Дополнен 1 год назад
Мастерская Пина имеет полки, пронумерованные от 1 до n. Когда Пин хочет положить деталь на полку — он всегда выбирает свободную полку с наименьшим номером, чтобы не ходить далеко от рабочего стола. Для удобства Пин нумерует все свои детали целыми числами.

Вам предстоит написать программу, которая будет обрабатывать m событий. Каждое событие может быть либо «Пин положил деталь с номером X», либо «Пин взял с полки деталь с номером X». Для каждого события первого типа требуется определить номер полки, на которую Пин положит деталь.

Обратите внимание, что в мастерской у Пина всегда есть свободные полки, и ситуации, когда все полки заняты, не возникает.

Формат входных данных

В первой строке вводится число m (1 ≤ m ≤ 2* 10^5) — число событий. Далее следуют m строк, описывающих события. Каждая деталь задаётся номером — числом от 1 до 10^5.

Событие «+X» означает, что Пин положил деталь с номером X, событие « −X» — что деталь убрали и полка стала свободной. В нулевой момент времени все полки свободны.

Формат выходных данных

Для каждого события «Пин положил деталь» выведите номер полки, на которую её положили, в том порядке, в котором эти события происходили.
Голосование за лучший ответ
YT_VolkOFF Оракул (79804) 1 год назад
от пример кода на Java, который обрабатывает события:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// Ввод количества событий
int n = Integer.parseInt(System.console().readLine());

// Создание массива для хранения номеров полок
int[] shelves = new int[n];

// Обработка событий
for (int i = 0; i < n; i++) {
// Получение номера полки
int shelfNum = Integer.parseInt(System.console().readLine());

// Проверка, свободна ли полка
if (shelves[shelfNum - 1] == -1) {
// Если полка свободна, добавляем номер детали в массив полок
shelves[shelves.length - 1 - shelfNum] = shelfNum;
} else {
System.out.println("Ошибка: полка занята");
}
}

// Вывод номеров полок, на которых лежат детали
for (int shelf = 0; shelf < shelves.length; shelf++) {
System.out.print("Полка " + (shelf + 1) + ": ");
for (int detail : shelves) {
if (detail == shelf + 1) {
System.out.print(detail + " ");
}
}
System.out.println();
}
}
}

Программа считывает количество событий n, затем создает массив shelves для хранения номеров полок. При обработке каждого события программа запрашивает номер полки и проверяет, свободна ли она. Если полка свободна, программа добавляет номер детали в конец массива полок. Если полка занята, программа выводит сообщение об ошибке.

После обработки всех событий программа выводит номера полок, на которых лежат детали.
Похожие вопросы