• + 0 comments
    int total_number_of_shelves;
        scanf("%d", &total_number_of_shelves);
        
        int total_number_of_queries;
        scanf("%d", &total_number_of_queries);
        
        total_number_of_books = (int *) calloc(total_number_of_shelves,sizeof(int));
        total_number_of_pages = (int **) calloc(total_number_of_shelves,sizeof(int *));
        
        while (total_number_of_queries--) {
            int type_of_query;
            scanf("%d", &type_of_query);
            
            if (type_of_query == 1) {
                /*
                 * Process the query of first type here.
                 */
                int x, y;
                scanf("%d %d", &x, &y);
                int bIS = *(total_number_of_books + x);
                *(total_number_of_pages + x) = (int*)realloc(*(total_number_of_pages+x),sizeof(int)*(bIS+1));
                *(*(total_number_of_pages+x)+bIS) = y;
                *(total_number_of_books + x) += 1; // the address the Incremented by 1 so pointing to next address of total_number_of_page[1]
    
            } else if (type_of_query == 2) {
                int x, y;
                scanf("%d %d", &x, &y);
                printf("%d\n", *(*(total_number_of_pages + x) + y));
            } else {
                int x;
                scanf("%d", &x);
                printf("%d\n", *(total_number_of_books + x));
            }
        }