You've successfully subscribed to The Poor Coder | Hackerrank Solutions
Great! Next, complete checkout for full access to The Poor Coder | Hackerrank Solutions
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Hackerrank Variable Sized Arrays Solution

Hackerrank Variable Sized Arrays Solution

Beeze Aal
Beeze Aal

.MathJax_SVG_LineBox {display: table!important} .MathJax_SVG_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}

Consider an -element array, , where each index  in the array contains a reference to an array of  integers (where the value of  varies from array to array). See the Explanation section below for a diagram.

Given , you must answer  queries. Each query is in the format i j, where  denotes an index in array  and  denotes an index in the array located at . For each query, find and print the value of element  in the array at location  on a new line.

Click here to know more about how to create variable sized arrays in C++.

Input Format

The first line contains two space-separated integers denoting the respective values of  (the number of variable-length arrays) and  (the number of queries).
Each line  of the  subsequent lines contains a space-separated sequence in the format k a[i]0 a[i]1 … a[i]k-1 describing the -element array located at .
Each of the  subsequent lines contains two space-separated integers describing the respective values of  (an index in array ) and  (an index in the array referenced by ) for a query.

Constraints.MathJax_SVG_LineBox {display: table!important} .MathJax_SVG_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}

  • All indices in this challenge are zero-based.
  • All the given numbers are non negative and are not greater than

Output Format

For each pair of  and  values (i.e., for each query), print a single integer denoting the element located at index  of the array referenced by . There should be a total of  lines of output.

Sample Input

2 2
3 1 5 4
5 1 2 8 9 3
0 1
1 3

Sample Output

5
9

Explanation

The diagram below depicts our assembled Sample Input:

variable-length-arrays.png

We perform the following  queries:

  1. Find the array located at index , which corresponds to . We must print the value at index  of this array which, as you can see, is .
  2. Find the array located at index , which corresponds to . We must print the value at index  of this array which, as you can see, is .

Solution in cpp

Approach 1.

int n,q;
cin >> n>> q;
int** seq = new int* [n];
for(int i=0;i<n;i++) {
    int a;
    cin>>a;
    int* b=new int [a];
    for(int j=0;j<a;j++) {
        int e;
        cin>>e;
        b[j]=e;
    }
    *(seq+i)=b;
}
for(int i=0;i<q;i++) {
  int r,s;
  cin >> r >> s;
  cout << seq[r][s] << endl;
}
return 0;
}

Approach 2.

    int n, q, k, qs, qi;
    cin >> n >> q;
    int **seq = new int*[n];
    for (int c = 0; c < n; c++) {
        cin >> k;
        seq[c] = new int[k];
        for (int d = 0; d < k; d++) {
            cin >> seq[c][d];
        }
    }
    for (int c = 0; c < q; c++) {
        cin >> qs >> qi;
        cout << seq[qs][qi] << endl;
    }
	return 0;
}

Approach 3.

    int n, q;
    cin >> n >> q;

    int *mtr[n];

    for(int i=0; i<n; i++){
        int s;
        cin >> s;
        mtr[i] = new int[s];
        for(int j=0; j<s; j++){
            cin>>mtr[i][j];
        }          
    }

    for(int i=0; i<q; i++){
        int r, c;
        cin >> r;
        cin >> c;
        cout << mtr[r][c]<<endl;
    }
    
	return 0;
}