int main() { int c, tc = 0; long i, m, x, y; while(std::scanf("%ld%ld", &n, &m) != EOF) { rev = false; for(i = 1; i <= n+1; ++i) list[i].num = i, list[i].prev = &list[i-1], list[i-1].next = &list[i]; list[0].num = list[n+1].num = 0, list[n+1].next = NULL; for(i = 0; i < m; ++i) { std::scanf("%d", &c); if(c < 4) std::scanf("%ld%ld", &x, &y); if((c == 1 && !rev) || (c == 2 && rev)) move_to_left(&list[x], &list[y]); else if((c == 2 && !rev) || (c == 1 && rev)) move_to_right(&list[x], &list[y]); else if(c == 3) swap(&list[x], &list[y]); else rev = !rev; } std::printf("Case %d: %lu\n", ++tc, get_odd_sum()); } return 0; }
static void add_left_clicked (GtkWidget *button, gpointer data) { GtkTreeIter iter; GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (data)); gtk_tree_selection_get_selected (selection, NULL, &iter); move_to_left (gtk_tree_view_get_model (GTK_TREE_VIEW (data)), &iter, NULL); }
static void move_row (GtkTreeModel *src, GtkTreeIter *src_iter, GtkTreeModel *dest, GtkTreeIter *dest_iter) { if (src == left_tree_model) move_to_right (src_iter, dest, dest_iter); else if (dest == left_tree_model) move_to_left (src, src_iter, dest_iter); else move_up_or_down (src, src_iter, dest, dest_iter); }
int my_mlx_hook_loop(t_env *e) { if (e->mv->left == 1) e = move_to_left(e); if (e->mv->right == 1) e = move_to_right(e); if (e->mv->front == 1) e = move_to_front(e); if (e->mv->back == 1) e = move_to_back(e); my_expose_hook(e); return (0); }
inline void swap(node_t *x, node_t *y) { if(x->next == y) move_to_right(x, y); else if(y->next == x) move_to_left(x, y); else { node_t *px = x->prev, *nx = x->next, *py = y->prev, *ny = y->next; px->next = y, y->prev = px; y->next = nx, nx->prev = y; py->next = x, x->prev = py; x->next = ny, ny->prev = x; } }