Can anyone please tell me what is the difference between this 2 solutions
#include<bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define FILE_READ_IN freopen("input.txt","r",stdin);
#define FILE_READ_OUT freopen("output.txt","w",stdout);
using namespace std;
typedef long long ll;
int main(){
#ifndef ONLINE_JUDGE
FILE_READ_IN
FILE_READ_OUT
#endif
int n,x,y; cin>>n>>x>>y;
vector<pair<int,int>> a;
for(int i=0;i<n;i++)
{
int u,v; cin>>u>>v;
a.push_back({u,v});
}
vector<int> x_val,y_val;
for(int i=0;i<x;i++)
{
int u; cin>>u;
x_val.push_back(u);
}
for(int i=0;i<y;i++)
{
int u; cin>>u;
y_val.push_back(u);
}
sort(x_val.begin(),x_val.end());
sort(y_val.begin(),y_val.end());
int min_val=INT_MAX;
for(int i=0;i<n;i++)
{
auto l=lower_bound(x_val.begin(),x_val.end(),a[i].first);
auto u=lower_bound(y_val.begin(),y_val.end(),a[i].second);
if(*l>a[i].first) l--;
//cout<<*u<<" "<<*l<<"\n";
if(*u>=a[i].second)
min_val=min(min_val,*u-*l+1);
}
cout<<min_val<<"\n";
return 0;
And the other solution is
#include<bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define FILE_READ_IN freopen("input.txt","r",stdin);
#define FILE_READ_OUT freopen("output.txt","w",stdout);
using namespace std;
typedef long long ll;
int main(){
#ifndef ONLINE_JUDGE
FILE_READ_IN
FILE_READ_OUT
#endif
int n,x,y; cin>>n>>x>>y;
vector<pair<int,int>> a;
for(int i=0;i<n;i++)
{
int u,v; cin>>u>>v;
a.push_back({u,v});
}
vector<int> x_val,y_val;
for(int i=0;i<x;i++)
{
int u; cin>>u;
x_val.push_back(u);
}
for(int i=0;i<y;i++)
{
int u; cin>>u;
y_val.push_back(u);
}
sort(x_val.begin(),x_val.end());
sort(y_val.begin(),y_val.end());
int min_val=INT_MAX;
for(int i=0;i<n;i++)
{
auto l=upper_bound(x_val.begin(),x_val.end(),a[i].first);
auto u=lower_bound(y_val.begin(),y_val.end(),a[i].second);
l--;
//cout<<*u<<" "<<*l<<"\n";
if(*u>=a[i].second)
min_val=min(min_val,*u-*l+1);
}
cout<<min_val<<"\n";
return 0;
}
In the 1st one I used lower_bound only, in 2nd I have used upper_bound and lower_bound, what’s the difference, 2nd is correct and 1st is wrong