Dynamic Array in C – Hacker Rank Solution | HackerRank Programming Solutions | HackerRank C Solutions

Hello Programmers/Coders, Today we are going to share solutions of Programming problems of HackerRank of Programming Language C . At Each Problem with Successful submission with all Test Cases Passed, you will get an score or marks. And after solving maximum problems, you will be getting stars. This will highlight you profile to the recruiters.

In this post, you will find the solution for Dynamic Array in C-HackerRank Problem. We are providing the correct and tested solutions of coding problems present on HackerRank. If you are not able to solve any problem, then you can take help from our Blog/website.

Use “Ctrl+F” To Find Any Questions Answer. & For Mobile User, You Just Need To Click On Three dots In Your Browser & You Will Get A “Find” Option There. Use These Option to Get Any Random Questions Answer.

C is one of the most widely used Programming Languages. it is basically used to build Operating System. C was developed by Dennis Ritchie in 1972. Below are some examples of C Programming which might you understanding the basics of C Programming.

Problem

Snow Howler is the librarian at the central library of the city of HuskyLand. He must handle requests which come in the following forms:

1 x y : Insert a book with y pages at the end of the xth shelf.
2 x y : Print the number of pages in the yth book on the xth shelf.
3 x : Print the number of books on the xth shelf.

Snow Howler has got an assistant, Oshie, provided by the Department of Education. Although inexperienced, Oshie can handle all of the queries of types 2 and 3.

Help Snow Howler deal with all the queries of type 1.

Oshie has used two arrays:

int* total_number_of_books;
/*
 * This stores the total number of books on each shelf.
 */

int** total_number_of_pages;
/*
 * This stores the total number of pages in each book of each shelf.
 * The rows represent the shelves and the columns represent the books.
 */

Input Format :

The first line contains an integer total_number_of_shelves, the number of shelves in the library. The second line contains an integer total_number_of_queries, the number of requests.

Each of the following total_number_of_queries lines contains a request in one of the three specified formats.

Constraints :

  • 1<= total_number_of_shelves <= 10^5
  • 1<= total_number_of_queries <= 10^5
  • For each query of the second type, it is guaranteed that a book is present on the xth shelf at yth index.
  • 0 <= x < total_number_of_shelves
  • Both the shelves and the books are numbered starting from 0.
  • Maximum number of books per shelf <= 1100

Output Format :

Write the logic for the requests of type 1. The logic for requests of types 2 and 3 are provided. 


Sample Input 0 :

5
5
1 0 15
1 0 20
1 2 78
2 2 0
3 0

Sample Output 0 :

78
2

Explanation 0 :

There are 5 shelves and 5 requests, or queries.
– 1 Place a 15 page book at the end of shelf 0.
– 2 Place a 20 page book at the end of shelf 0.
– 3 Place a 78 page book at the end of shelf 2.
– 4 The number of pages in the 0th book on the 2th shelf is 78.
– 5 The number of books on the 0th shelf is 2.

Dynamic Array in C – Hacker Rank Solution
#include <stdio.h>
#include <stdlib.h>

/*
 * This stores the total number of books in each shelf.
 */
int* total_number_of_books;

/*
 * This stores the total number of pages in each book of each shelf.
 * The rows represent the shelves and the columns represent the books.
 */
int** total_number_of_pages;
int main()
{
    int total_number_of_shelves;
    scanf("%d", &total_number_of_shelves);

    total_number_of_books = calloc(total_number_of_shelves, sizeof(int));

    int total_number_of_queries;
    scanf("%d", &total_number_of_queries);

    total_number_of_pages = malloc(total_number_of_shelves * sizeof(int *));
    for (int i = 0; i < total_number_of_shelves; i++) 
    {
        total_number_of_pages[i] = calloc(1100, 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 shelf, pages;
            scanf("%d %d", &shelf, &pages);
            total_number_of_books[shelf]++;
            int *book = total_number_of_pages[shelf];
            while (*book != 0)
                book++;
            *book = pages;
        } 
        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));
        }
    }

    if (total_number_of_books) 
    {
        free(total_number_of_books);
    }
    
    for (int i = 0; i < total_number_of_shelves; i++) 
    {
        if (*(total_number_of_pages + i)) 
        {
            free(*(total_number_of_pages + i));
        }
    }
    
    if (total_number_of_pages) 
    {
        free(total_number_of_pages);
    }
    
    return 0;
}

Leave a Comment

Ads Blocker Image Powered by Code Help Pro
Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Refresh