ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам |
К задаче N

Проект МЦНМО
при участии
школы 57
Фильтр
Сложность с по   Класс с по  
Выбрано 2 задачи
Версия для печати
Убрать все задачи

Имя входного файла:

memory.in

Имя выходного файла:

memory.out

Максимальное время работы на одном тесте:

2 секунды

Максимальный объем используемой памяти:

64 мегабайта

Максимальная оценка за задачу:

100 баллов

   

Пете поручили написать менеджер памяти для новой стандартной библиотеки языка H++. В распоряжении у менеджера находится массив из N последовательных ячеек памяти, пронумерованных от 1 до N. Задача менеджера - обрабатывать запросы приложений на выделение и освобождение памяти.

Запрос на выделение памяти имеет один параметр K. Такой запрос означает, что приложение просит выделить ему K последовательных ячеек памяти. Если в распоряжении менеджера есть хотя бы один свободный блок из K последовательных ячеек, то он обязан в ответ на запрос выделить такой блок. При этом непосредственно перед самой первой ячейкой памяти выделяемого блока не должно располагаться свободной ячейки памяти. После этого выделенные ячейки становятся занятыми и не могут быть использованы для выделения памяти, пока не будут освобождены. Если блока из K последовательных свободных ячеек нет, то запрос отклоняется.

Запрос на освобождение памяти имеет один параметр T. Такой запрос означает, что менеджер должен освободить память, выделенную ранее при обработке запроса с порядковым номером T. Запросы нумеруются, начиная с единицы. Гарантируется, что запрос с номером T - запрос на выделение, причем к нему еще не применялось освобождение памяти. Освобожденные ячейки могут снова быть использованы для выделения памяти. Если запрос с номером T был отклонен, то текущий запрос на освобождение памяти игнорируется.

Требуется написать менеджер памяти, удовлетворяющий приведенным критериям.

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

Первая строка входного файла содержит числа N и M - количество ячеек памяти и количество запросов соответственно (1 ≤ N ≤ 231 - 1; 1 ≤ M ≤ 105). Каждая из следующих M строк содержит по одному числу: (i+1)-я строка входного файла (1 ≤ iM) содержит либо положительное число K, если i-й запрос - запрос на выделение с параметром K (1 ≤ KN), либо отрицательное число -T, если i-й запрос - запрос на освобождение с параметром T (1 ≤ T < i).

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

Для каждого запроса на выделение памяти выведите в выходной файл результат обработки этого запроса: для успешных запросов выведите номер первой ячейки памяти в выделенном блоке, для отклоненных запросов выведите число -1. Результаты нужно выводить в порядке следования запросов во входном файле.

Пример

memory.in

memory.out

6 8

2

3

-1

3

3

-5

2

2

1

3

-1

-1

1

-1

Вниз   Решение


Дан четырехугольник ABCD. На стороне AB взята точка K, на стороне BC &8212; точка L, на стороне CD — точка M и на стороне AD — точка N, так, что KB = BL = a, MD = DN = b. Пусть KL $ \nparallel$ MN. Найти геометрическое место точек пересечения прямых KL и MN при изменении a и b.

Вверх   Решение

Задачи

Страница: 1 [Всего задач: 5]      



Задача 78029  (#1)

Темы:   [ Арифметика остатков (прочее) ]
[ Десятичная система счисления ]
[ Разложение на множители ]
Сложность: 3+
Классы: 8,9,10

2n = 10a + b.  Доказать, что если  n > 3,  то ab делится на 6.  (n, a и b – целые числа,  b < 10.)

Прислать комментарий     Решение

Задача 78030  (#2)

Темы:   [ ГМТ с ненулевой площадью ]
[ Четырехугольники ]
Сложность: 3
Классы: 9

Дан четырехугольник ABCD. На стороне AB взята точка K, на стороне BC &8212; точка L, на стороне CD — точка M и на стороне AD — точка N, так, что KB = BL = a, MD = DN = b. Пусть KL $ \nparallel$ MN. Найти геометрическое место точек пересечения прямых KL и MN при изменении a и b.
Прислать комментарий     Решение


Задача 78031  (#3)

Темы:   [ Числовые таблицы и их свойства ]
[ Четность и нечетность ]
Сложность: 3+
Классы: 9

Квадратная таблица из 49 клеток заполнена числами от 1 до 7 так, что в каждом столбце и в каждой строке встречаются все эти числа. Докажите, что если таблица симметрична относительно диагонали, идущей из левого верхнего угла в правый нижний, то на этой диагонали встречаются все эти числа.

Прислать комментарий     Решение

Задача 78032  (#4)

Тема:   [ Выпуклые и невыпуклые фигуры (прочее) ]
Сложность: 3
Классы: 9

Какие выпуклые фигуры могут содержать прямую?
Прислать комментарий     Решение


Задача 78033  (#5)

Темы:   [ Четыре точки, лежащие на одной окружности ]
[ Углы, опирающиеся на равные дуги и равные хорды ]
Сложность: 3+
Классы: 9

На окружности даны четыре точки A, B, C, D. Через каждую пару соседних точек проведена окружность. Вторые точки пересечения соседних окружностей обозначим через A1, B1, C1, D1. (Некоторые из них могут совпадать с прежними.) Доказать, что A1, B1, C1, D1 лежат на одной окружности.
Прислать комментарий     Решение


Страница: 1 [Всего задач: 5]      



© 2004-... МЦНМО (о копирайте)
Пишите нам

Проект осуществляется при поддержке Департамента образования г.Москвы и ФЦП "Кадры" .