Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main()
- {
- int n, q, c;
- unsigned int tmp;
- char temp;
- cin >> n;
- Node **tab_min = new Node *[n+1];
- Node **tab_max = new Node *[n+1];
- Node *tab = new Node[n+1];
- for (int i = 1; i <= n; i++)
- {
- cin >> tmp;
- tab_max[i] = &(tab[i]);
- heap_push_max(tab_max, tmp);
- tab_min[i] = &(tab[i]);
- heap_push_min(tab_min, tmp);
- }
- cin >> q;
- for (int i = 0; i < q; i++)
- {
- cin >> c;
- cin >> temp;
- if (temp == 's')
- {
- for (int i = 0; i < c; i++)
- {
- if (size_h_min > 0)
- {
- while (tab_min[1]->data == 1 && size_h_min > 0)
- {
- delete_root_min(tab_min);
- }
- tab_min[1]->data = collatz(tab_min[1]->data);
- if (tab_min[1]->data == 0 && size_h_min > 0)
- {
- delete_root_min(tab_min);
- }
- else if (size_h_min > 0)
- {
- heapify_up_max(tab_max, tab_min[1]->i_max);
- heapify_max(tab_max, tab_min[1]->i_max, size_h_max);
- heapify_min(tab_min, 1, size_h_min);
- }
- }
- }
- }
- else if (temp == 'l')
- {
- for (int i = 0; i < c; i++)
- {
- if (size_h_max > 0 && tab_max[1]->data != 1)
- {
- tab_max[1]->data = collatz(tab_max[1]->data);
- if (tab_max[1]->data == 0 && size_h_max > 0)
- {
- delete_root_max(tab_max);
- }
- else if (size_h_max > 0)
- {
- heapify_up_min(tab_min, tab_max[1]->i_min);
- heapify_min(tab_min, tab_max[1]->i_min, size_h_min);
- heapify_max(tab_max, 1, size_h_max);
- }
- if (tab_min[1] == 0 && size_h_min > 0)
- {
- delete_root_min(tab_min);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement