Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- Heap heap1;
- Heap heap2;
- char c;
- int count = 0;
- ID1 = -1;
- ID2 = -1;
- <deque> deq1;
- <deque> deq2;
- int N, M, K, ID;
- int heapIdxToID[N];
- for (int = 0; i < M; ++i)
- {
- cin >> c;
- if (c == 'R')
- {
- count++;
- R++;
- if (count < K) //Не хватает - просто добавляем в 1 кучу
- {
- ID1++;
- heap1.add(a[R], ID1); //ID1 - номер добавления элемента в 1 кучу
- deq1.push_back(ID1);
- cout << "-1" << endl;
- }
- if (count == K) //Только что набралось нужное число, просто добавляем к-ый и выводим
- {
- ID1++;
- heap1.add(a[R], ID1);
- deq1.push_back(ID1);
- cout << heap1[0]; << endl;
- }
- if (count > K) //Появились лишние - их во вторую кучу (если больше корня, иначе в 1 а корень во вторую)
- {
- if (a[R] > heap1[0]) //Если больше корня то во вторую кучу просто
- {
- ID2++;
- heap2.add(a[R], ID2);
- deq2.push_back(ID2);
- cout << heap1[0] << endl;
- }
- else //Иначе корень стал уже к+1 и его во вторую надо
- {
- root1 = heap1[0];
- heap1.del(heap1[0]);
- heap1.add(a[R]);
- heap2.add(root1);
- //deq1.pushback(ID1++);
- }
- }
- }
- else
- {
- L--;
- count--;
- if (count < K) //Стало недостаточно, удаляем первый добавленный в 1 кучу
- {
- ID = deq1[0]; //В deq1[0] лежит номер первого добавленного
- deq1.pop_front();
- heap1.del(ID);
- cout << "-1" << endl;
- }
- if (count >= K) //В 1 куче к-1, во 2 1-inf. Надо удалить первый в 1 куче, перебросить из 2 кучи , удалить его и вывести
- {
- ID = deq1[0];
- deq1.pop_front();
- heap1.del(ID); //удаляю из первой кучи первый туда добавленный
- ID1++;
- heap1.add(heap2[0], ID1); // добавляю из 2 кучи в первую (по идее вседа в корень т.к. он больше остальных)
- deq1.push_back(ID1); //!!!!А не нарушиться ли от такого добавления порядок в массиве? надо же самый левый удалять
- ID_top2 = heapIdxToID[0]; //узнаю какой айди у вершины второй кучи
- heap2.del(ID_top2); //удаляю вершину у 2 кучи
- cout << heap1[0] << endl;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment