Problem Name: Wormholes (ZCO12002); Refer to description for more details

Problem Statement: CodeChef: Practical coding for everyone.

I have already solved the problem using a different approach by creating my own function for lower and upper bound but when I am using the in-built function lower_bound() and upper_bound() defined in the C++ STL library I am getting WA in the last test-case only.

Below is the function which computes the minimum time as asked in the problem statement:

static ll_t compute_minimum_time(const std :: vector <std :: pair <ll_t, ll_t>> & contest_schedule, std :: vector <ll_t> & wormhole_open_time, std :: vector <ll_t> & wormhole_close_time) {

    std :: sort(wormhole_open_time.begin(), wormhole_open_time.end());
    std :: sort(wormhole_close_time.begin(), wormhole_close_time.end());

    ll_t min_time = 1e10;

    for(const auto & schedule: contest_schedule) {
        std :: vector <ll_t> :: iterator t1 = std :: upper_bound(wormhole_open_time.begin(), wormhole_open_time.end(), schedule.first);
        if(t1 == wormhole_open_time.begin()) {
        // t1 = wormhole_open_time.begin() + (t1 - wormhole_open_time.begin()) - 1;
        std :: vector <ll_t> :: iterator t2 = std :: lower_bound(wormhole_close_time.begin(), wormhole_close_time.end(), schedule.second);
        if(t2 == wormhole_close_time.end()) {
        min_time = std :: min(min_time, 1 + ((*t2) - (*t1)));
    return min_time;

If you want to refer to the whole source-code then go to: Full Source-Code.

I am looking for the test-cases where my code will fail as it is failing to produce AC in the very last given case. Moreover, I would appreciate it, if someone can tell me what and where is the bug in my program in detail so that I don’t create the same bug in the future.


Typo in line 37.

1 Like

Ya solved it thanks.