Variable Sized Arrays

  • + 1 comment

    The following include two solutions

    1. Using Vectors
    int main() {
        int rows, q;
        cin >> rows >> q;
        
        vector<vector<int>> matrix(rows);
        for(int i=0; i<rows; i++) {
           int cols;
           cin >> cols;
           matrix[i].resize(cols);
           
           for(int j=0; j<cols; j++) cin >> matrix[i][j];
        }
        
        // for query part
        for(int i=0; i<q; i++) {
            int row, col;
            cin >> row >> col;
            cout << matrix[row][col] << endl;
        }
        return 0;
    }
    
    1. Using normal Arrays
    int main() {
        int rows, q;
        cin >> rows >> q;
        
        int ** matrix = new int*[rows];
        
        // taking inputs
        for(int i=0; i<rows; i++) {
           int cols;
           cin >> cols;
           matrix[i] = new int[cols];
           
           for(int j=0; j<cols; j++) cin >> matrix[i][j];
        }
        
        // for query part
        for(int i=0; i<q; i++) {
            int row, col;
            cin >> row >> col;
            cout << matrix[row][col] << endl;
        }
        
        // delete dynamically allocated memory
        for(int i=0; i<rows; i++) {
            delete[] matrix[i];
        }
        delete[] matrix;
        return 0;
    }
    

    The logic is same TC -> O(n * m) where n is rows and m is columns