ЗАДАЧИ
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

Вниз   Решение


Решить систему:
   x + y + z = a,
   x
² + y² + z² = a²,
   x³ + y³ + z³ = a³.

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

Задачи

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



Задача 57686

Темы:   [ Векторы сторон многоугольников ]
[ Признаки и свойства параллелограмма ]
Сложность: 4
Классы: 8,9,10

Пусть E и F — середины сторон AB и CD четырехугольника ABCD, K, L, M и N — середины отрезков AF, CE, BF и DE. Докажите, что KLMN — параллелограмм.
Прислать комментарий     Решение


Задача 57687

Темы:   [ Векторы сторон многоугольников ]
[ Выпуклые многоугольники ]
Сложность: 5
Классы: 8,9,10

Дано n попарно не сонаправленных векторов (n$ \ge$3), сумма которых равна нулю. Докажите, что существует выпуклый n-угольник, набор векторов сторон которого совпадает с данным набором векторов.
Прислать комментарий     Решение


Задача 57688

Тема:   [ Векторы сторон многоугольников ]
Сложность: 5
Классы: 9

Даны четыре попарно непараллельных вектора, сумма которых равна нулю. Докажите, что из них можно составить: а) невыпуклый четырехугольник; б) самопересекающуюся четырехзвенную ломаную.
Прислать комментарий     Решение


Задача 57689

Тема:   [ Векторы сторон многоугольников ]
Сложность: 6
Классы: 9

Даны четыре попарно непараллельных вектора  a, b, c и  d, сумма которых равна нулю. Докажите, что

|a| + |b| + |c| + |d| > |a + b| + |a + c| + |a + d|.


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

Задача 57690

Тема:   [ Векторы сторон многоугольников ]
Сложность: 6
Классы: 9

В выпуклом пятиугольнике ABCDE сторона BC параллельна диагонали AD, CD || BE, DE || AC и  AE || BD. Докажите, что AB || CE.
Прислать комментарий     Решение


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



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

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