I am getting wrong answer in ZCO12002 can anyone help me in finding my mistake

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

int main()
{
int n,x,y,i,b,c,t,m=INT_MAX;
vector<pair<int,int>>a;
vectorv;
vectorw;
vector::iterator lower, upper;
vector<pair<int,int>>::iterator it;
cin>>n>>x>>y;
for(i=0;i<n;i++)
{
cin>>b>>c;
a.push_back(make_pair(b,c));
}
for(i=0;i<x;i++)
{
cin>>b;
v.push_back(b);
}
for(i=0;i<y;i++)
{
cin>>b;
w.push_back(b);
}
sort(v.begin(),v.end());
sort(w.begin(),w.end());
for(it=a.begin();it!=a.end();it++)
{
lower=lower_bound(v.begin(),v.end(),it->first);
upper=upper_bound(w.begin(),w.end(),it->second);
// cout<<*(lower-1)<<" "<<upper<<" "<<(upper-1)<<endl;

    if(*(upper-1)==it->second)
    {
            t=*(upper-1)-*(lower-1)+1;
            // cout<<"1  "<<*(upper-1)<<"  "<<*(lower-1)<<endl;
    }
    else
    {
            t=*upper-*(lower-1)+1;
            // cout<<"2  "<<*(upper)<<"  "<<*(lower-1)<<endl;
    }
    if(t>0)
     m=min(t,m);
}
cout<<m<<endl;
return 0;

}

why are you doing lower-1 ??
The starting bus should be <= starting time of contest

If you do lower_bound and if you subtract 1 from that , you wil get strictly smaller value
Think what we have to do to find the smaller than or equal to some value :slight_smile:

i have changed code but still i am getting wrong answer in 3 subtask

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

int main()
{
int n,x,y,i,b,c,t,m=INT_MAX;
vector<pair<int,int>>a;
vectorv;
vectorw;
vector::iterator lower, upper;
vector<pair<int,int>>::iterator it;
cin>>n>>x>>y;
for(i=0;i<n;i++)
{
cin>>b>>c;
a.push_back(make_pair(b,c));
}
for(i=0;i<x;i++)
{
cin>>b;
v.push_back(b);
}
for(i=0;i<y;i++)
{
cin>>b;
w.push_back(b);
}
sort(v.begin(),v.end());
sort(w.begin(),w.end());
for(it=a.begin();it!=a.end();it++)
{
lower=lower_bound(v.begin(),v.end(),it->first);
upper=upper_bound(w.begin(),w.end(),it->second);
// cout<<(lower-1)<<" "<<upper<<" "<<(upper-1)<<endl;
if(lower==it->first)
{
if(
(upper-1)==it->second)
{
t=
(upper-1)-(lower)+1;
// cout<<"1 "<<
(upper-1)<<" “<<(lower-1)<<endl;
}
else
{
t=upper-(lower)+1;
// cout<<"2 "<<
(upper)<<” "<<(lower-1)<<endl;
}
}
else
{
if(
(upper-1)==it->second)
{
t=(upper-1)-(lower-1)+1;
// cout<<"1 "<<(upper-1)<<" "<<(lower-1)<<endl;
}
else
{
t=upper-(lower-1)+1;
// cout<<"2 "<<(upper)<<" "<<(lower-1)<<endl;
}
}
if(t>0)
m=min(t,m);
}
cout<<m<<endl;
return 0;
}