mercredi 26 septembre 2018

c++ variable sized arrays from Hackerrank with vectors

I wanted to solve a challenge named "Variable sized Arrays" on Hackerrank and I wanted to do that using vectors. The Code I wrote, doesn't work properly and I tried debugging it, but I'm getting nowhere. I'll be grateful for Here's the challenge:

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

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

Input Format

The first line contains two space-separated integers denoting the respective values of n (the number of variable-length arrays) and q (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 k-element array located at a[i]. Each of the q subsequent lines contains two space-separated integers describing the respective values of i (an index in array a) and j (an index in the array referenced by a[i]) for a query.

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

Sample Output
5
9

So here's my code for this (I'll leave it with the couts for debugging):

#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::vector;
using std::endl;

int main() {

    int numberOfQueries = 0;
    int numberOfArrays = 0;
    cout << "Enter Nr.Of Arrays followed by Nr.Of Queries:";
    cin >> numberOfArrays >> numberOfQueries;
    cout << "Nr.Of Arrays: " << numberOfArrays << endl;
    cout << "Nr.Of Queries: " << numberOfQueries << endl;
    vector<vector<int>>multiArray;
    cout << "MultiArray size: " << multiArray.size();
    while (numberOfArrays != 0) {
        int vsize = 0;
        cout << "\nenter array starting by its size: ";
        cin >> vsize;
        cout << " Size entered  is: " << vsize << endl;
        vector<int> vec1(vsize);
        cout << "Array Size is: " << vec1.size() << endl;
        //int element = 0;
        while (cin >> vsize) {
            cout << "Element is: " << vsize << "\n";
            vec1.push_back(vsize);
        };
        multiArray.push_back(vec1);
        numberOfArrays--;
        cout << "MultiArray size: " << multiArray.size();
        cout << "Nr.Of Arrays: " << numberOfArrays << endl;
    };
    while (numberOfQueries > 0) {
        int i = 0, j = 0;
        cout << "\nQuery indexes:";
        cin >> i >> j;
        cout << multiArray[i][j];
        numberOfQueries--;
    }
}

Aucun commentaire:

Enregistrer un commentaire