➤ Problem Link : 479D. Long Jumps
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,l,x,y; cin>>n>>l>>x>>y; ll arr[n+1]; ll cum[n+1]; cum[0]=0; unordered_map<ll,ll> mp; for(ll i=1;i<=n;i++) { cin>>arr[i]; cum[i]=arr[i]+cum[i-1]; mp[arr[i]]=i; } bool fx=0,fy=0; ll xval,yval; for(int i=1;i<=n;i++) { if(mp.find(x+arr[i])!=mp.end()) fx=1; if(mp.find(y+arr[i])!=mp.end()) fy=1; } if(fx && fy) cout<<"0"; else if(fx) { cout<<"1\n"; cout<<y; } else if(fy) { cout<<"1\n"; cout<<x; } else { ll cnt=0; ll val1=x+y; ll val2=abs(x-y); ll mn=min(x,y); ll mx=max(x,y); for(int i=1;i<=n;i++) { if(mp.find(val1+arr[i])!=mp.end()) { cout<<"1\n"; cout<<arr[i]+x; exit(0); } else if(mp.find(val2+arr[i])!=mp.end()) { if(arr[i]-mn>=0) { cout<<"1\n"; cout<<arr[i]-mn; } else if(arr[i]+mx<=l) { cout<<"1\n"; cout<<arr[i]+mx; } else continue; exit(0); } } cout<<"2\n"; cout<<x<<" "<<y; } }
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!!