void conduct() { scanf("%d%d", &n, &q); cur = n = ans = 0; lft.avl_init(); rit.avl_init(); pref[0] = &rit; pref[1] = &lft; while (q--) { int cmd; scanf("%d", &cmd); if (cmd) { int id1 = pref[0]->tree[pref[0]->avl_head()].id; int id2 = pref[1]->tree[pref[1]->avl_head()].id; if (!pref[0]->empty() && (abs(cur-val[id1]) <= abs(cur-val[id2]) || pref[1]->empty())) { ans += abs(cur-val[id1]); cur = val[id1]; pref[0]->avl_remove(id1); } else if (!pref[1]->empty()) { ans += abs(cur-val[id2]); cur = val[id2]; pref[1]->avl_remove(id2); avl_tree* tmp = pref[0]; pref[0] = pref[1]; pref[1] = tmp; } } else { int pos; scanf("%d", &pos); if (n == N-1) while (1); val[++n] = pos; if (val[n] == cur) pref[0]->avl_insert(n); else if (val[n] < cur) lft.avl_insert(n); else rit.avl_insert(n); } } cout << ans << endl; }