#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
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;
}