Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
27 / 27 / 6
Регистрация: 04.04.2013
Сообщений: 137
Записей в блоге: 1
1

Задача про деки

16.03.2015, 18:52. Показов 2884. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попалась такая вот задача на e-olimp:
Деки на 6 мегабайтах
Напишите программу, которая умеет оперировать с большим количеством деков. Дек - это "очередь с двумя концами".
Входные данные

Первая строка содержит общее количество команд n (0 ≤ n ≤ 150000). Каждая из следующих n строк содержит описание команды:

"pushfront A B" - вставить число B в начало дека A;
"pushback A B" - вставить число B в конец дека A;
"popfront A" - удалить первый элемент дека A;
"popback A" - удалить последний элемент дека A.
Для каждой команды параметры A и B - целые числа от 1 до 150000 включительно.

Выходные данные

Для каждой команды popfront или popback выведите удаляемое число. Гарантируется, что перед выполнением команды удаления соответствующий дек не пуст.
Мой код:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <deque>
#include <string>
#include <map>
using namespace std;
 
int main() {
   ios_base::sync_with_stdio(0);
   cin.tie(0);
   map <int, deque <int> > a;
   int n, k, t;
   string s;
   cin >> n;
   while (n--) {
       cin >> s;
       if (s == "pushfront") {
           cin >> k >> t;
           a[k].push_front(t);
       }
       else if (s == "pushback") {
           cin >> k >> t;
           a[k].push_back(t);
       }
       else if (s == "popfront") {
           cin >> k;
           cout << a[k].front() << endl;
           a[k].pop_front();
       }
       else {
           cin >> k;
           cout << a[k].back() << endl;
           a[k].pop_back();
       }
   }
}
Я не могу вместить программу в 6 мегабайтов. Что делать подскажите. Заранее благодарю!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2015, 18:52
Ответы с готовыми решениями:

Задача на тему Стеки, очереди, деки, списки, кольца
Программа на вход получает список школьников следующего вида: 9 Иванов 10 Петров ...

Задача про взлом кода из книги Эрика Фримена про основы javascript в конце 5 главы.
читаю книгу Эрика Фримена про основы javascript.В конце 5 главы есть задачка про взлом кода.Никак...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он...

Деки
Здравствуйте! Есть задание осуществить основные операции с деком. При добавлении элементов в начало...

3
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
16.03.2015, 19:09 2
храни обычный статический массив из 150000 деков. должно влезть.
0
27 / 27 / 6
Регистрация: 04.04.2013
Сообщений: 137
Записей в блоге: 1
16.03.2015, 20:22  [ТС] 3
salam, Да нет, так еще хуже!
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
17.03.2015, 10:44 4
Лучший ответ Сообщение было отмечено Rasul96 как решение

Решение

Если ручками реализовать деки через указатели, то получим
4 * 2 = 8 байт на дек (по 4 байта на 2 указателя в 32-битной системе)
8 * 150 000 = 1 200 000 байт на массив деков
4 * 2 + 4 = 12 байт на число
12 * 150 000 = 1 800 000 на все числа
итого 3 000 000 байт сильно меньше 6 Мб

В 64-битной системе уже не все так радужно, указатели по 8 байт, значит 16 байт на дек, 16+4=20 на числа, итого
(16+20)*150000 = 5 400 000 байт
1
17.03.2015, 10:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2015, 10:44
Помогаю со студенческими работами здесь

деки в делфи
Даны два упорядоченных по возрастанию дека. Объединить их в третий дек, упорядоченный по убыванию.

Деки. Шифровка текста
Здравствуйте. Делаю свою лабораторную по программированию. Нужно сделать задание, которое звучит...

стеки, деки, очереди
Всем привет! Mне нужно найти много примеры для стека, дека и очереди чтобы хорошо изучать их в...

Samsung NP-R518 в корпусе от CD деки
Посмотрел ветку моддинг и поразился количеству тем, нужно поправлять положение... :scratch: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru