Is HackerRank fair?

 Published On October 20, 2023

A bit confused about HackerRank

Recently I’m doing a little bit HackerRank questions, but I don’t quite understand its system. In its “1 week preparation kit” day 4 “mock test”, there’s a petrol pump problem like this one; my “simple and slow” Swift answer failed more than half of the tests because they cannot be finished in 2 seconds:

func truckTour(petrolpumps: [[Int]]) -> Int {
    print(petrolpumps)
    // Write your code here
    for index in 0 ..< petrolpumps.count {
        var petrol = 0
        var isFinished = true
        for i2 in index ..< petrolpumps.count {
            print("\(i2): \(petrol), \(petrolpumps[i2])")
            petrol += petrolpumps[i2][0] - petrolpumps[i2][1]
            if petrol <= 0 {
                isFinished = false
                break
            }
            print("\(i2): \(petrol)")
        }
        if isFinished {
            return index
        }
    }
    return 1
}

However, after translating it to C, all tests are passed in time:

int truckTour(int petrolpumps_rows, int petrolpumps_columns, int** petrolpumps) {
    for (int index = 0; index < petrolpumps_rows; index++) {
        int petrol = 0;
        bool isFinished = true;
        for (int i2 = index; i2 < petrolpumps_rows; i2++) {
            petrol += petrolpumps[i2][0] - petrolpumps[i2][1];
            if (petrol <= 0) {
                isFinished = false;
                break; 
            }
        }
        if (isFinished) {
            return index;
        }
    }
    return 1; 
}

It is not surprising that my Swift answer failed, it’s should because it’s slow. However, I wonder why my C version is passed. IMO they should give the C version at most 0.08s to 0.1s, or increase input data size by 15-20 times. What do you think?


Tags: HackerRank

Comments:

comments powered by Disqus