RubyShanks
RubyShanks

Reputation: 139

Runtime error on hackerrank problems for no reason?

This is the question: https://www.hackerrank.com/challenges/lisa-workbook/problem.

My code passes all the test cases except one. The message I get is just Run Time Error. Even if I return 0 at the beginning of the function that I am supposed to implement, I still get this error, while in all other test cases I get Wrong Answer.

This is not the only question on hacker rank where this happened. In the last couple of days I encountered 3 or 4 more questions with that one odd case that was always giving a runtime error. In the end, I had to implement a Python 3 solution (with the same logic), which passed all the test cases, to solve these problems.

I wonder if this is a bug on the website or if I am understanding something wrongly. Here is my function implementation for this problem:

int workbook(int n, int k, int arr_count, int* arr)
{
    int tmp = 1, specprob = 0;
    int *chstart = malloc(n * sizeof(int));
    int *chend = malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        chstart[i] = tmp;
        tmp += arr[i] / k - 1;
        if (arr[i] % k != 0) {
            tmp++;
        }
        chend[i] = tmp;
        tmp++;
        if (!(arr[i] < chstart[i])) {
            int qno = 0, chpage = 1, iqno = 0;
            for (int j = chstart[i]; j < chend[i] + 1; j++) {
                if (chpage * k <= arr[i]) {
                    qno += k;
                } else {
                    qno += (k - (chpage * k - arr[i]));
                }
                if (j > iqno && j < qno + 1) {
                    specprob++;
                }
                iqno = qno;
                chpage++;
            }
        }
    }
    return specprob;
}

Upvotes: 2

Views: 5024

Answers (1)

jackw11111
jackw11111

Reputation: 1547

It looks like a bug, since when you run the empty function with just a return 0; it gives the same runtime error.

For the moment though, if you don't mind too much about the different language, you could make a few minor changes to the code to make it compile for C++ (don't forget to change the language selection too):

int workbook(int n, int k, vector<int> arr) 
{
    int tmp = 1, specprob = 0;
    int *chstart = (int*)malloc(n * sizeof(int));
    int *chend =  (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
    {
        chstart[i] = tmp;
        tmp += arr[i] / k - 1; 
        if (arr[i] % k != 0)
        {
            tmp++;
        }
        chend[i] = tmp;
        tmp++;
        if (!(arr[i] < chstart[i]))
        {
            int qno = 0, chpage = 1, iqno = 0;
            for (int j = chstart[i]; j < chend[i] + 1; j++)
            {
                if (chpage * k <= arr[i])
                {
                    qno += k;
                }
                else
                {
                    qno += (k - (chpage * k - arr[i]));
                }
                if (j > iqno && j < qno + 1)
                {
                    specprob++;
                }
                iqno = qno;
                chpage++;
            }
        }
    }
    return specprob;
}

Upvotes: 1

Related Questions