➤ Problem Link : 1148B. Born This Way
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,m,ta,tb,k; cin>>n>>m>>ta>>tb>>k; if(k>=n || k>=m) { cout<<"-1"; exit(0); } ll A[n+1],B[m+1]; for(ll i=1;i<=n;i++) cin>>A[i]; for(ll i=1;i<=m;i++) cin>>B[i]; ll ans=-1; ll reachB,low,mid,high,ind; for(ll i=0;i<=k;i++) { reachB=A[1+i]+ta; low=1,high=m; while(low<high) { mid=low+(high-low)/2; if(B[mid]>=reachB) high=mid; else low=mid+1; } if(low==1 || low==m) { if(B[low]<reachB) { cout<<"-1"; exit(0); } } if(low+k-i > m) { cout<<"-1"; exit(0); } ind=low+k-i; ans=max(ans,B[ind] + tb); } cout<<ans; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!