CTIME - EDITORIAL

https://www.codechef.com/viewsolution/47096388
can someone please help me Only 3rd subtask is not passing…

hey i think you missed the case of multiple invigilator. if there is two invigilator in the time interval of 0 to 5 then 0 5 will be inputted twice in your pair and your code will add extra 5 minutes of invigilation. hope it will help.

I have tried all the test cases I could come up with but am still failing test case #1. I have read the editorial and my code seems to handle all three cases mentioned. Kindly help me figure out the issue. Thanks in advance!

Code :slight_smile:

https://www.codechef.com/viewsolution/47125542

Please provide some test where it will fail.

can someone pls let me know where I m going wrong?
https://www.codechef.com/viewsolution/47054702

Replacable Code
while(x<n+2 && count<k)
{
    if(flag)
    {
     prev=ar[x-1].e;
    }
long cur=ar[x].s;
    if(prev<cur)
    {
        if(flag==false)
        {
            flag=true;
            continue;
        }
        count+=cur-prev;
    }
    else if(prev>cur)
    {
        flag=false;
    }
 //  System.out.println(count); 
x++;
}

Why don’t you replace this entire thing with one for loop?
Initialise a variable free_time with 0.
For each i, 1 \le i \le (N + 1), free_time += (ar[i].s - ar[i - 1].end).
You know the reason why I took 1 to N + 1.
Now, check if free_time >= k. Output YES or NO based on this condition.

Edit: This will not work unless you merge Overlapping Intervals.

I did the same thing in the last for loop used count as variable

Thanks , @suman_18733097 for your valuable advice .

#include<bits/stdc++.h>
using namespace std;

int main() {

int t;
cin >> t;
while(t--)
{
    int n, g, tg;
    cin >> n >> g >> tg;
    
    vector<pair<int, int>> a(n);
    for(int i=0; i<n; i++)
    cin >> a[i].first >> a[i].second;
    
    
    int safe[tg];
    memset(safe, 0, sizeof(safe));
    
    for(int i=0; i<n; i++)
    {
        int s = a[i].first, e = a[i].second;
        
        for(int j=s; j<e; j++)
        safe[j] = 1;
    }
    
    int counter = 0;
    for(int i=0; i<tg; i++)
    {
        if(safe[i] == 0)
        counter++; 
    }
    
    (counter >= g) ? cout << "yes\n" : cout << "no\n";
}
return 0;

}

can anyone help !!!

You haven’t told us what problem you’re running into, yet :slight_smile:

Yes they do take overlapping intervals